添加容器颜色时出错:ParentDataWidget 的使用不正确
Posted
技术标签:
【中文标题】添加容器颜色时出错:ParentDataWidget 的使用不正确【英文标题】:Error when adding container color: Incorrect use of ParentDataWidget 【发布时间】:2019-11-24 16:02:25 【问题描述】:我正在尝试为我的容器添加背景颜色,然后可能会使用 BoxDecoration() 添加一些边框半径。将 color: Colors.red 添加到容器时,它被抛出:
ParentDataWidget 使用不正确。展开的小部件必须直接放在 Flex 小部件内。
Container(
color: Colors.red,
child: Expanded(
child: ListView.builder(
padding: EdgeInsets.all(0.0),
itemCount: _clients.length,
itemBuilder: (context, index)
final client = _clients[index];
return Dismissible(
key: Key(client),
direction: DismissDirection.startToEnd,
onDismissed: (direction)
setState(()
_clients.removeAt(index);
);
,
background: Container(color: Color(0xff171e24)),
child: _clientListTile(context, client)
);
),
),
)
【问题讨论】:
【参考方案1】:这个错误说明的是小部件Expanded
必须放在Flex widget
中。 Flex 小部件包括行、列等。考虑您是否希望在容器内拥有多个项目,以及您希望它们是水平的还是垂直的。
快速解决方法是将Expanded
包装为Row
或Column
,但这取决于您想要什么。
这是使用您的代码的示例:
class Test extends StatelessWidget
final _clients = ["1","2","3","4","5"];
@override
Widget build(BuildContext context)
return Container(
color: Colors.red,
child: Row( //or column
children: <Widget>[
Expanded(
child: ListView.builder(
padding: EdgeInsets.all(0.0),
itemCount: _clients.length,
itemBuilder: (context, index)
final client = _clients[index];
return Dismissible(
key: Key(client),
direction: DismissDirection.startToEnd,
onDismissed: (direction) print(direction);,
background: Container(color: Color(0xff171e24)),
child: Text("Client: " + client)
);
),
),
//add another item if you want its a row or column after all :-)
],
)
);
如果您有任何问题,请告诉我!
编辑
既然您说它嵌套在列中,请尝试使用Expanded()
将其拉伸到Flex Widget
。
此处显示:
class Test extends StatelessWidget
final _clients = ["1","2","3","4","5"];
@override
Widget build(BuildContext context)
return Column(
children: <Widget> [
Expanded( //RIGHT HERE
child: Container(
color: Colors.red,
child: Row( //or column
children: <Widget>[
Expanded(
child: ListView.builder(
padding: EdgeInsets.all(0.0),
itemCount: _clients.length,
itemBuilder: (context, index)
final client = _clients[index];
return Dismissible(
key: Key(client),
direction: DismissDirection.startToEnd,
onDismissed: (direction) print(direction);,
background: Container(color: Color(0xff171e24)),
child: Text("Client: " + client)
);
,
),
),
//add another item if you want its a row
],
),
),
),
],
);
【讨论】:
感谢您的回复。由于某种原因,此方法使 ListView 完全消失 我认为这归结为容器的父级,父级是什么?那里可能会发生冲突。 容器的父级是另一个Column 您是否有机会更新您的代码以显示您如何使用该列?只是想确保你有属性 children以上是关于添加容器颜色时出错:ParentDataWidget 的使用不正确的主要内容,如果未能解决你的问题,请参考以下文章
如何为容器添加背景颜色,包括 Flutter 中的 Expanded
在laravel excel导出中将颜色应用于excel单元格时出错
尝试从 Spring Boot Docker 容器连接到 mongo Docker 容器时验证 MongoCredential 时出错?