Uro*_*ros 7 list widget dart flutter
我正在创建一个 flutter 应用程序,它应该显示团队列表,每个团队都是一个包含以下项目的对象
name: 细绳
players: 数组
name: 细绳
所以看起来像这样
List teams = [
{
'name': 'Team one',
'players': [
{
'name': 'Team one player one',
},
{
'name': 'Team one player two',
},
{
'name': 'Team one player three',
},
]
},
{
'name': 'Team two',
'players': [
{
'name': 'Team two player one',
},
{
'name': 'Team two player one',
},
{
'name': 'Team two player three',
},
]
},
];
Run Code Online (Sandbox Code Playgroud)
此外,在我的代码中,我正在迭代所有teamswith ListView,就像这样
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: renderTeams(teams),
),
);
}
Run Code Online (Sandbox Code Playgroud)
看起来renderTeams()像这样:
Widget renderTeams(List teams) {
return ListView.builder(
itemCount: teams.length,
itemBuilder: (context, index) {
return Padding(
padding: EdgeInsets.all(10.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.min,
children: [
Text(teams[index]['name']),
Row(
children: <Widget>[
Flexible(
child: PlayerCard(
player: teams[index]['players'][0],
),
),
Flexible(
child: PlayerCard(
player: teams[index]['players'][1],
),
),
Flexible(
child: PlayerCard(
player: teams[index]['players'][2],
),
),
],
)
],
),
);
},
);
}
Run Code Online (Sandbox Code Playgroud)
这效果很好,一切都会相应地渲染。
但是,我想迭代每个团队成员,而不是单独添加每个玩家,所以我的renderTeams()看起来像这样:
Widget renderTeams(List teams) {
return ListView.builder(
itemCount: teams.length,
itemBuilder: (context, index) {
return Padding(
padding: EdgeInsets.all(10.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.min,
children: [
Text(teams[index]['name']),
renderPlayers(teams[index]['players'])
],
),
);
},
);
}
Run Code Online (Sandbox Code Playgroud)
看起来renderPlayers()像这样:
renderPlayers(players) {
return Row(children: players.map((player) => {
Flexible(
child: PlayerCard(
player: player,
),
)
}).toList());
}
Run Code Online (Sandbox Code Playgroud)
这就是我的麻烦开始的地方,因为我遇到了类似的错误
type 'List<dynamic>' is not a subtype of type 'List<Widget>'
我已经用谷歌搜索过,但其他响应尝试修复类型,但这导致我陷入尝试修复我不理解的错误的无限循环。
有人有任何提示吗?提前致谢
消除{ }
renderPlayers(players) {
return Row(children: players.map((player) =>
Flexible(
child: PlayerCard(
player: player,
),
)
).toList());
}
Run Code Online (Sandbox Code Playgroud)
解释
=>方法return。=> { ... }意味着返回一个函数(动态)。这就是为什么它被检测为List<dynamic>
| 归档时间: |
|
| 查看次数: |
20702 次 |
| 最近记录: |