【发布时间】:2021-09-29 04:05:31
【问题描述】:
我需要创建嵌套列表视图,下面的代码工作正常,但我需要 listOfTiles 作为动态, 例如:我正在通过“银行”、“社交媒体”,即硬编码, 以下是我的适当列表,通过使用 _types、_names、_subtypes 等列表,我需要创建 listOfTiles
结果会像, 如果我点击 Banks,那将有 sbi hdfc 如果我点击 SociaMedia,就会有 fb
List<Type> _types = ['Banks','SociaMedia']
List<Name> _names = ['SBI','HDFC','FB']
List<SubType> _subtypes = ['Net Banking','Debit card']
body: new ListView.builder(
itemBuilder: (BuildContext context, int index) {
return new StuffInTiles(listOfTiles[index]);
},
itemCount: listOfTiles.length,
)
class StuffInTiles extends StatelessWidget {
final MyTile myTile;
StuffInTiles(this.myTile);
@override
Widget build(BuildContext context) {
return _buildTiles(myTile);
}
Widget _buildTiles(MyTile t) {
if (t.children.isEmpty)
return new ListTile(
onTap: () => print("tap"),
subtitle: new Text("Subtitle"),
selected: false,
title: new Text(t.title));
return new ExpansionTile(
key: new PageStorageKey<int>(1),
title: new Text(t.title),
children: t.children.map(_buildTiles).toList(),
);
}
}
class MyTile {
String title;
List<MyTile> children;
MyTile(this.title, [this.children = const <MyTile>[]]);
}
List<MyTile> listOfTiles = <MyTile>[
new MyTile(
'Banks',
<MyTile>[
new MyTile(
'SBI',
<MyTile>[
new MyTile(
'NetBanking',
<MyTile>[
new MyTile('username'),
new MyTile('password'),
],
),
],
),
],
),
new MyTile(
'SocialMedia',
<MyTile>[
new MyTile('Gmail'),
new MyTile('Facebook'),
new MyTile('Twitter'),
],
)]```
【问题讨论】:
标签: flutter dart listview dynamic