我正在尝试使用for循环在SliverList
小部件中添加小部件。
但是我得到了这个错误代码
error: The element type 'Set<EachBusInfoBodyWidget>' can't be assigned to the list type 'Widget'
这里出现问题。
slivers: [
for(var i=0;i<5;i++){
EachBusInfoBodyWidget(Colors.green)
}
]
如果我使用这样的代码
EachBusInfoBodyWidget(Colors.green)
EachBusInfoBodyWidget(Colors.green)
EachBusInfoBodyWidget(Colors.green)
EachBusInfoBodyWidget(Colors.green)
EachBusInfoBodyWidget(Colors.green)
单独运行,
答案 0 :(得分:1)
如下更改您的build
方法:
@override
Widget build(BuildContext context) {
//insert
List<Widget> widgets = List<Widget>();
for(var i=0;i<5;i++){
widgets.add(EachBusInfoBodyWidget(Colors.green));
}
//end insert
return Scaffold(
还要更改您的CustomScrollView
:
child: CustomScrollView(
slivers:
<Widget>[
SliverList(
delegate: SliverChildListDelegate(
//insert
widgets
//end insert
),
),
],
),
答案 1 :(得分:0)
这里的问题是collection for operator不带花括号({}
)。也就是说,正如您所知,它们不与它们配合使用。
花括号用于Set
和Map
文字。如果您在条目后面添加冒号,则它将变成Map
文字,例如{ 'flavor': 'sweet' }
。但是,如果仅使用花括号,它将创建一个Set
。通常,这不影响for循环,因为大括号用作常规流控制。
无论如何,要解决该问题,您只需删除花括号即可:
for(var i = 0; i < 5; i++) EachBusInfoBodyWidget(Colors.green)