Flutter 颤振-容器宽度和高度适合母体
我有一个Flutter 颤振-容器宽度和高度适合母体,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,我有一个卡片小部件,它包括列和其他几个小部件。其中之一是容器 Widget _renderWidget() { return Column( children: <Widget>[ Visibility( visible: _isVisible, child: Container( width: 300, height: 200,
卡片
小部件,它包括列
和其他几个小部件。其中之一是容器
Widget _renderWidget() {
return Column(
children: <Widget>[
Visibility(
visible: _isVisible,
child: Container(
width: 300,
height: 200,
decoration:
BoxDecoration(border: Border.all(color: Colors.grey)),
child: ListView.builder(
itemCount: titles.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(
leading: Icon(icons[index]),
title: Text(titles[index]),
),
);
},
)),
),
],
);
}
您正在
列中使用列表视图
,因此需要在容器中指定高度
,以防止出现错误
最好的方法是使用扩展的
或灵活的
作为列表视图的父级
Expanded(
child: ListView.builder(...)
)
更新:
Widget _renderWidget() {
return Column(
children: <Widget>[
Visibility(
visible: _isVisible,
child: Expanded(
child: ListView.builder(
itemCount: titles.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(
leading: Icon(icons[index]),
title: Text(titles[index]),
),
);
},
),
),
),
],
);
}
Widget\u renderWidget(){
返回列(
儿童:[
可见度(
可见:_是可见的,
儿童:扩大(
子项:ListView.builder(
itemCount:titles.length,
itemBuilder:(上下文,索引){
回程卡(
孩子:ListTile(
前导:图标(图标[索引]),
标题:文本(标题[索引]),
),
);
},
),
),
),
],
);
}
只需将容器的高度
和宽度
属性设置为double.infinity
解决方案代码:
Widget _renderWidget() {
return Column(
children: <Widget>[
Visibility(
visible: _isVisible,
child: Container(
width: double.infinity,
height: double.infinity,
decoration:
BoxDecoration(border: Border.all(color: Colors.grey)),
child: ListView.builder(
itemCount: titles.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(
leading: Icon(icons[index]),
title: Text(titles[index]),
),
);
},
)),
),
],
);
}
Widget\u renderWidget(){
返回列(
儿童:[
可见度(
可见:_是可见的,
子:容器(
宽度:double.infinity,
高度:双无限,
装饰:
BoxEdition(边框:border.all(颜色:Colors.grey)),
子项:ListView.builder(
itemCount:titles.length,
itemBuilder:(上下文,索引){
回程卡(
孩子:ListTile(
前导:图标(图标[索引]),
标题:文本(标题[索引]),
),
);
},
)),
),
],
);
}
但是我得到了一个错误:RenderFlex子项具有非零flex,但传入的高度约束是无限的。它对我有效,我测试了你的代码,确保你删除了容器
widget它仍然不起作用。我有Container-Column-Container-Expanded-ListView。同样,我也不确定它为什么不起作用,你能发布完整的代码吗?谢谢你更新它,但是当前的帖子有很多我无法访问的变量。您是否可以再次更新它,使其易于复制?
Widget _renderWidget() {
return Column(
children: <Widget>[
Visibility(
visible: _isVisible,
child: Container(
width: double.infinity,
height: double.infinity,
decoration:
BoxDecoration(border: Border.all(color: Colors.grey)),
child: ListView.builder(
itemCount: titles.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(
leading: Icon(icons[index]),
title: Text(titles[index]),
),
);
},
)),
),
],
);
}