Flutter:解决 SingleChildScrollView 嵌套 ListView、GridView 报错问题

在一个可以滚动的 Widget 嵌套另外一个可滚动的 Widget会报错,因为两个都是可以滚动,所以只需要禁止子 Widget 的滚动属性即可。

RenderBox was not laid out: _RenderSingleChildViewport#652a6 relayoutBoundary=up7 NEEDS-PAINT
'package:flutter/src/rendering/box.dart':
Failed assertion: line 1687 pos 12: 'hasSize'

解决方法非常简单,只需要增加shrinkWrap: truephysics: NeverScrollableScrollPhysics()即可。

SingleChildScrollView(
  child: Column(
    children: <Widget>[
      GridView.count(
        crossAxisCount: 2,
        children: <Widget>[],
        physics: NeverScrollableScrollPhysics(),
        shrinkWrap: true,
      ),
      ListView.builder(
        itemCount: 10,
        itemBuilder: (context, index) {
          return Text("test");
        },
        physics: NeverScrollableScrollPhysics(),
        shrinkWrap: true,
      )
    ],
  ),
)

推荐阅读更多精彩内容