Flutter ListView报错RenderBox was not laid out: RenderViewport#680c1 NEEDS-LAYOUT NEEDS-PAINT

RenderBox was not laid out: RenderViewport#680c1 NEEDS-LAYOUT NEEDS-PAINT

  • 使用ListView.builder()布局时,如果嵌套在Row或者Column中,可能会报这个错误,原因是没有给ListView指定大小,所以应该在ListView外面套一个SIzedBox或者Container,再指定一个高度,或者想自适应高度的话就套一个Flexible或者Expanded。
return Scaffold(
      body: SafeArea(
        left: false,
        right: false,
        child: Container(
          padding: EdgeInsets.fromLTRB(0, 12, 0, 36),
          child: Column(children: [
	  ......
	  其他组件
	  ......
	    Expanded(
                child: Container(
              child: ListView(
                  children: []
                    ..add(row('Anywhere'))
                    ..add(or())
                    ..add(row('Country'))
                    ..add(row('State'))),
            )),
	  ......
	  其他组件
	  ......
	  ]))));
  • 如果还是白屏试试把shrinkWrap设置为true,并将physics设置为NeverScrollableScrollPhysics()

参考:https://blog.csdn.net/heming9174/article/details/89919561/

posted @ 2021-11-18 15:57  R1cardo  阅读(721)  评论(0编辑  收藏  举报