首页 > 解决方案 > 在颤动中填充列时出现屏幕溢出

问题描述

我知道在这种情况下我们可以使用ListVieworExpanded代替列,但是当我使用 ListView 而不是 Column 时,下面的代码会出现运行时异常。聚焦输入后打开键盘时,列中的 TextFields 溢出。

class _AddAchievementDialog extends State<AddAchievementDialog> {
  String title, description, longDescription, linksString, id;

  List<String> links;

  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      title: Text(
        "Add",
        textAlign: TextAlign.center,
      ),
      shape: RoundedRectangleBorder(),
      contentPadding: EdgeInsets.all(10),
      content: Container(
        padding: EdgeInsets.all(10),
        height: 350,
        child: Column(
          children: <Widget>[
            TextField(
              decoration: InputDecoration(labelText: 'Title'),
            ),
            TextField(
              keyboardType: TextInputType.multiline,
              maxLines: 2,
              decoration: InputDecoration(labelText: 'Description'),
            ),
            TextField(
              keyboardType: TextInputType.multiline,
              maxLines: 3,
              decoration: InputDecoration(labelText: 'Long Description'),
            ),
            TextField(
              decoration:
                  InputDecoration(labelText: 'Links (seperated by comma) '),
            ),
          ],
        ),
      ),
      actions: <Widget>[
        RaisedButton(
          child: Text("Submit"),
        )
      ],
    );
  }
}

标签: androidmobiledartflutter

解决方案


您必须将 Column-Widget 包装在 aScrollView- Widget 中并调整一些标志位。

ListView(
  physics: NeverScrollableScrollPhysics(),
  shrinkWrap: true,
  children: <Widget>[
     Text();
  ]
);

通过这些设置,您可以防止您的 Widget 显示溢出错误;此外,使用物理设置,您可以防止列表视图在列表视图中显示 overscroll-ui。


推荐阅读