Flutter 无法在颤振中滚动ListView
我是新来的颤振,目前正在工作的一个项目,是在一个滚动栏的需要。所以我使用了ListView。CollapseTile是一个重构的小部件 代码如下: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.
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']);
},
);
})
],
),
羽衣甘蓝(
文字:“牙齿”,
儿童:[],
),
羽衣甘蓝(
文字:'嘴',
儿童:[],
),
羽衣甘蓝(
文字:“眼睛”,
儿童:[],
),
羽衣甘蓝(
文字:'头发',
儿童:[],
),
羽衣甘蓝(
文字:“钉子”,
儿童:[],
),
],
),
),
),
],
);
请附上它的屏幕截图