【问题标题】:Scrollable Alertdialog Flutter可滚动的警报对话框颤振
【发布时间】:2021-04-12 02:52:55
【问题描述】:

我正在努力让 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 但我不确定在哪里添加它,因为它会导致错误。任何帮助将不胜感激!

【问题讨论】:

标签: flutter dart icons flutter-alertdialog


【解决方案1】:

你有很多只包含 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]),
                );
            }),
          ),
),

【讨论】:

    【解决方案2】:

    我认为您使用了不需要的 Column() 小部件。

    试试这个。

    return AlertDialog(
      title: const Text('Popup example'),
      content: SingleChildScrollView(
        child: new Column(
          children: new List.generate(50, (int index) {
            return new Positioned(
              child: Icon(
                Icons.camera
              ),
            );
          }),
        ),
      ),
    );
    

    【讨论】:

    • 您好,感谢您的帮助,但是,当我使用它时,它会抛出此错误:“构建函数返回 null。”
    • @ajnabz 尝试在 AlertDialog 前面添加 return 语句
    猜你喜欢
    • 2019-10-27
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2018-11-30
    • 1970-01-01
    • 2019-09-02
    • 2021-04-16
    相关资源
    最近更新 更多