Flutter 无法在颤振中滚动ListView

Flutter 无法在颤振中滚动ListView,flutter,listview,dart,flutter-widget,Flutter,Listview,Dart,Flutter Widget,我是新来的颤振,目前正在工作的一个项目,是在一个滚动栏的需要。所以我使用了ListView。CollapseTile是一个重构的小部件 代码如下: Widget build(BuildContext context) { return Scaffold( body: Column( children: <Widget>[ ListView( scrollDirection: Axis.

我是新来的颤振,目前正在工作的一个项目,是在一个滚动栏的需要。所以我使用了ListView。CollapseTile是一个重构的小部件

代码如下:

Widget build(BuildContext context) {
    return Scaffold(
        body: Column(
          children: <Widget>[
            ListView(
                scrollDirection: Axis.vertical,
                shrinkWrap: true,
                children: <Widget>[
                  SizedBox(height: 20.0),
                  CollapseTile(
                    text: 'Skin',
                    children: <Widget>[
                      ListView.builder(
                          shrinkWrap: true,
                          physics: AlwaysScrollableScrollPhysics(),
                          itemCount: data['skin'].length,
                          itemBuilder: (BuildContext context, int index) {
                            print(_selectedSkin);
                            return CheckboxListTile(
                              title: Text(data['skin'][index]['name']),
                              value: _selectedSkin
                                  .contains(data['skin'][index]['name']),
                              secondary: Image(
                                image: AssetImage(
                                    'images/${skinImageName[index]}'),
                              ),
                              onChanged: (bool selected) {
                                _onSelected(
                                    selected, data['skin'][index]['name']);
                              },
                            );
                          })
                    ],
                  ),
                  CollapseTile(
                    text: 'Teeth',
                    children: <Widget>[],
                  ),
                  CollapseTile(
                    text: 'Mouth',
                    children: <Widget>[],
                  ),
                  CollapseTile(
                    text: 'Eye',
                    children: <Widget>[],
                  ),
                  CollapseTile(
                    text: 'Hair',
                    children: <Widget>[],
                  ),
                  CollapseTile(
                    text: 'Nails',
                    children: <Widget>[],
                  ),
                ],
              ),
            ),
          ],
        );
  }
小部件构建(构建上下文){
返回脚手架(
正文:专栏(
儿童:[
列表视图(
滚动方向:轴垂直,
收缩膜:对,
儿童:[
尺寸箱(高度:20.0),
羽衣甘蓝(
文本:“皮肤”,
儿童:[
ListView.builder(
收缩膜:对,
物理:AlwaysScrollableScrollPhysics(),
itemCount:数据['skin']。长度,
itemBuilder:(构建上下文,int索引){
打印(选择皮肤);
返回CheckboxListTile(
标题:文本(数据['skin'][索引]['name']),
值:\ u selectedSkin
.contains(数据['skin'][索引]['name']),
次要:图像(
图片:资产评估(
'images/${skinImageName[index]}'),
),
一旦更改:(选择布尔值){
_当选(
选中,数据['skin'][索引]['name']);
},
);
})
],
),
羽衣甘蓝(
文字:“牙齿”,
儿童:[],
),
羽衣甘蓝(
文字:'嘴',
儿童:[],
),
羽衣甘蓝(
文字:“眼睛”,
儿童:[],
),
羽衣甘蓝(
文字:'头发',
儿童:[],
),
羽衣甘蓝(
文字:“钉子”,
儿童:[],
),
],
),
),
],
);
}

但是,ListView不会滚动,RenderFlex会溢出。

添加
SingleChildScrollView
&将physiscs添加为
NeverScrollableScrollPhysics
在这两个
ListView

 Scaffold(
  body: SingleChildScrollView( 
    child: Column(
      children: <Widget>[
    ListView(
    scrollDirection: Axis.vertical,
      physics: NeverScrollableScrollPhysics(),
      shrinkWrap: true,
      children: <Widget>[
        SizedBox(height: 20.0),
        CollapseTile(
          text: 'Skin',
          children: <Widget>[
            ListView.builder(
                shrinkWrap: true,
                physics: NeverScrollableScrollPhysics(),
                itemCount: data['skin'].length,
                itemBuilder: (BuildContext context, int index) {
                  print(_selectedSkin);
                  return CheckboxListTile(
                    title: Text(data['skin'][index]['name']),
                    value: _selectedSkin
                        .contains(data['skin'][index]['name']),
                    secondary: Image(
                      image: AssetImage(
                          'images/${skinImageName[index]}'),
                    ),
                    onChanged: (bool selected) {
                      _onSelected(
                          selected, data['skin'][index]['name']);
                    },
                  );
                })
          ],
        ),
        CollapseTile(
          text: 'Teeth',
          children: <Widget>[],
        ),
        CollapseTile(
          text: 'Mouth',
          children: <Widget>[],
        ),
        CollapseTile(
          text: 'Eye',
          children: <Widget>[],
        ),
        CollapseTile(
          text: 'Hair',
          children: <Widget>[],
        ),
        CollapseTile(
          text: 'Nails',
          children: <Widget>[],
        ),
      ],
    ),
),
  ),
],
);
脚手架(
正文:SingleChildScrollView(
子:列(
儿童:[
列表视图(
滚动方向:轴垂直,
物理学:NeverscrollableScroll物理学(),
收缩膜:对,
儿童:[
尺寸箱(高度:20.0),
羽衣甘蓝(
文本:“皮肤”,
儿童:[
ListView.builder(
收缩膜:对,
物理学:NeverscrollableScroll物理学(),
itemCount:数据['skin']。长度,
itemBuilder:(构建上下文,int索引){
打印(选择皮肤);
返回CheckboxListTile(
标题:文本(数据['skin'][索引]['name']),
值:\ u selectedSkin
.contains(数据['skin'][索引]['name']),
次要:图像(
图片:资产评估(
'images/${skinImageName[index]}'),
),
一旦更改:(选择布尔值){
_当选(
选中,数据['skin'][索引]['name']);
},
);
})
],
),
羽衣甘蓝(
文字:“牙齿”,
儿童:[],
),
羽衣甘蓝(
文字:'嘴',
儿童:[],
),
羽衣甘蓝(
文字:“眼睛”,
儿童:[],
),
羽衣甘蓝(
文字:'头发',
儿童:[],
),
羽衣甘蓝(
文字:“钉子”,
儿童:[],
),
],
),
),
),
],
);

请附上它的屏幕截图