首页 > 解决方案 > 可滚动的警报对话框颤振

问题描述

我正在努力使警报对话框在 Flutter 中可滚动。我已经尝试了几种方法,到目前为止,这是最有效的一种:

Widget _buildPopupDialog(BuildContext context) {
  List<IconData> _iconsTable = [
      Icons.build,
      Icons.format_paint,
      Icons.assignment,
      Icons.group_work,
      Icons.home,
      Icons.feedback,
      ...
    ];

  return new AlertDialog(
    title: const Text('Popup example'),
    content: Column(
    mainAxisSize: MainAxisSize.min,
    crossAxisAlignment: CrossAxisAlignment.stretch,
    children: <Widget>[
      SingleChildScrollView(
        child: Column(
        mainAxisSize: MainAxisSize.min,
        crossAxisAlignment: CrossAxisAlignment.stretch,
         children: <Widget>[
           new Column(
                children: new List.generate(26, (int index) {
                  return new Positioned(
                    child: new TableButtons(
                        iconData: _iconsTable[index]),
                  );
               }),
           ),
         ],
       ),
     ),
  ],
),

目前,图标正在显示,但没有滚动。我收到的错误消息是:“A RenderFlex 在底部溢出了 170 像素。” 我想我必须使用 ListView 但我不确定在哪里添加它,因为它会导致错误。任何帮助,将不胜感激!

标签: flutterdarticonsflutter-alertdialog

解决方案


你有很多只包含 1 个孩子的列,所以你必须清理一下你的代码:

Widget _buildPopupDialog(BuildContext context) {
  List<IconData> _iconsTable = [
      Icons.build,
      Icons.format_paint,
      Icons.assignment,
      Icons.group_work,
      Icons.home,
      Icons.feedback,
      ...
    ];

  return new AlertDialog(
    title: const Text('Popup example'),
    content: SingleChildScrollView(
        child: new Column(
          children: new List.generate(26, (int index) {
            return new Positioned(
              child: new TableButtons(
                iconData: _iconsTable[index]),
                );
            }),
          ),
),

推荐阅读