Flutter灵活的警报对话框列表

时间:2020-02-29 22:56:13

标签: android ios flutter flutter-layout

我正在尝试创建一个其中具有可滚动列表的对话框。

我的问题是

  1. 当项目太少时,对话框将无法缩小以适应
  2. 列表太大时,按钮会溢出。
  3. 列表以某种方式无法自由滚动,并一直移动到其初始位置。

代码:

xml-join-node

项目太少

enter image description here

物品过多时

enter image description here

2 个答案:

答案 0 :(得分:2)

尝试这些!

mainAxisSize:MainAxisSize.min,添加到Column小部件

并用ListView包裹Flexible

Row包裹Expanded个孩子

答案 1 :(得分:0)

使用Center,将宽度和高度赋予double.infinity,然后根据需要留出余量。在Expanded上使用list-view赋予其最大高度。

通过这样做,中心将占据容器给定的所有高度和宽度。这样您就不必担心像素溢出了。

 Widget getAllSelectedShipments() {
    return Center(
        child: Container(
          height: double.infinity,
          width: double.infinity,
          margin: EdgeInsets.fromLTRB(20, 50, 20, 50),
          child: Scaffold(
              body: Container(
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                    children: <Widget>[
                      Expanded(
                        child: ListView.separated(
                          shrinkWrap: true,
                          itemCount: 10,
                          itemBuilder: (BuildContext context, int index) {
                            return ListTile(
                              leading: Icon(Icons.location_on),
                              title: Text("title $index"),
                              subtitle: Text("subtitle $index"),
                              onTap: () async {},
                            );
                          },
                          separatorBuilder: (context, index) {
                            return Divider();
                          },
                        ),
                      ),
                      Row(
                        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                        children: <Widget>[
                          Icon(Icons.cancel),
                          Icon(Icons.check),
                        ],
                      )
                    ],
                  ))),
        ));
  }

请勿使用AlertDialog中的内容,而应使用Scaffold来提供自定义视图。

 showDialog(
                context: context,
                builder: (BuildContext context) {
                  return getAllSelectedShipments();
                },
              );