代码之家  ›  专栏  ›  技术社区  ›  jaede

垂直视区有无限高度误差

  •  8
  • jaede  · 技术社区  · 6 年前
     @override
     Widget build(BuildContext context) {
       return Column(
         children: <Widget>[
           new Text("Some text"),
           ListView()
         ],
       );
     }
    
     Widget ListView() {
       return ListView(
         padding: EdgeInsets.symmetric(vertical: 8.0),
         children: Item(),
       );
     }
    
     List<Item> Item() {
       return list
         .map((item) => Item(text: item))
         .toList();
     }
    
     class Item extends ListTile {
       Item({String text, GestureTapCallback onTap})
        : super(subtitle: Column(children: <Widget>[
            Text(text),
          ]));
     }
    

    屏幕上出现一个空白区域,控制台显示:

    垂直视区的高度是无限的。视口在中展开

    2 回复  |  直到 6 年前
        1
  •  21
  •   jaede    6 年前

    在Flexible中包装ListView将使其工作。

    Widget ListView() {
    return new Flexible(child: new ListView(
        padding: new EdgeInsets.symmetric(vertical: 8.0),
        children: Item()));
    }
    
        2
  •  4
  •   dmarquina    6 年前

    最好的解决方案是使用Flexible,但是如果您想给它一个确切的高度,您应该使用这样的容器:

        Widget ListView() {
        return Container(
           height:100.0,
           child: ListView(
            padding: new EdgeInsets.symmetric(vertical: 8.0),
            children: Item()));
        }