我是飞镖新手,我只想使用地图( store.state.availablePage.map )向ListView的子级添加数据列表,但是我已经在其中添加了一些项目ListView。
这是我想要的示例代码:
class MgDrawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StoreBuilder<AppState>(
builder: (context, store) {
return Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
Text("Title"),
store.state.availablePage.map((value) {
return ListTile(
title: Text("Title"),
onTap: () {},
);
}).toList(),
],
),
);
},
);
}
}
请帮助我如何实现这一目标?
更新:以上代码未编译。
答案 0 :(得分:1)
如果由于某种原因某人无法使用“ ...”运算符,那么还有另一种解决方案。它不如“ ...”运算符那么优雅,但它也可以使用。
您可以只在列表末尾使用..addAll(list)。
这是给定示例中的样子:
class MgDrawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StoreBuilder<AppState>(
builder: (context, store) {
return Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
Text("Title"),
]..addAll(store.state.availablePage.map((value) {
return ListTile(
title: Text("Title"),
onTap: () {},
);
}).toList(),),
),
);
},
);
}
}
答案 1 :(得分:0)
您可以在此Video中找到此示例,他还拥有其他一些小部件以及如何逐个使用它。
希望有帮助。
答案 2 :(得分:0)
您的ListView具有Text(Widget)
和一个Array of ListTile(Array of Widgets)
,表示ListView(children: [Widget, [Widget]])
。
但是它应该是ListView(children: [Widget1, Widget2, Widget3,...])
。下面的代码可能有帮助
class MgDrawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StoreBuilder<AppState>(
builder: (context, store) {
List<Widget> list = store.state.availablePage.map((value) {
return ListTile(
title: Text("Title"),
onTap: () {},
);
}).toList();
list.insert(0, Text("Title"));
return Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: list,
),
);
},
);
}
}