我正在尝试呈现6个团队的名单。 每个团队有五名球员,而设计就是我们有这样的东西
团队1(列) 第1队的名称(行) team1-player1,team1-player2,team1-player3,team1-player4,team1-player5(行)
第2队(列) 第2队的名称(行) team2-player1,team2-player2,team2-player3,team2-player4,team2-player5(行)
等等等
我的应用如下:
return Scaffold(
body: Container(
child: renderTeams(teams),
),
);
和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: <Widget>[
Text(teams[index]['name']),
ListView.builder(
shrinkWrap: true,
itemCount: teams[index]['players'].length,
physics: const NeverScrollableScrollPhysics(),
itemBuilder: (context, playerIndex) {
return PlayerCard(
player: teams[index]['players'][playerIndex]);
},
),
],
),
);
},
);
}
通过这种设置,我有6行而不是2行。每个玩家都有自己的行,或占据行的全宽。我不确定。我尝试在Row中添加第二个ListView.builder,但是没有运气。一些盒子会限制我无法修复的错误。
是的,PlayerCard的构建
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.all(5.0),
child: Column(
children: <Widget>[
Image.network(
player['photo'],
width: 100,
height: 150,
),
Text(player['name']),
Text(player['nick']),
],
),
);
}
有什么建议吗?
谢谢!
答案 0 :(得分:1)
JPanel
小部件具有textArea.setFocusable(false)
属性,该属性指示列表项所在的轴。默认值为ListView
,这就是内部scrollDirection
垂直放置Axis.vertical
小部件的原因。
如果您希望所有ListView
小部件都适合屏幕的宽度,则内部PlayerCard
应该替换为PlayerCard
,并且每个ListView
应该被包装用Row
或PlayerCard
来使它们在Flexible
内相等的宽度。
如果相反,您想在团队的Expanded
小部件中水平滚动,只需将Row
更改为PlayerCard
并删除scrollDirection
属性以使其正常滚动。您可能会想用Axis.horizontal
来包装physics
本身,以免它从ListView
溢出。