list - 如何在 flutter 中渲染列表中的列表?

标签 list dart flutter widget

我正在创建一个 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',
          },
        ]
      },
    ];

此外,在我的代码中,我正在遍历所有 teamsListView , 像这样

  Widget build(BuildContext context) {
    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: [
              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],
                    ),
                  ),
                ],
              )
            ],
          ),
        );
      },
    );
  }

这很好用,一切都相应地呈现。

但是,我想,而不是分别添加每个球员,遍历每个球队的球员,所以我的 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'])
            ],
          ),
        );
      },
    );
  }

renderPlayers()看起来像这样:

  renderPlayers(players) {
    return Row(children: players.map((player) => {
        Flexible(
          child: PlayerCard(
            player: player,
          ),
      )
    }).toList());
  }

这就是我的麻烦开始的地方,因为我遇到了类似

的错误

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());
}

解释

=>表示 return . => { ... }意味着返回一个函数(动态)。这就是为什么它被检测为 List<dynamic> 的原因

关于list - 如何在 flutter 中渲染列表中的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56218293/

相关文章:

android - Flutter是否有可用的Play核心库?

android - Google Play商店内部测试无法在三星S21 Ultra中安装

Python,第一个列表索引 - 先前的列表索引然后打印

flutter - 无法无条件访问属性 'quantity' ,因为接收者可以是 'null' 。尝试将访问设置为有条件的(使用 '?.' )

python - 使用列表项作为嵌套字典的键

flutter - 如何在 flutter 中修复相机照片的错误旋转?

dart - Dart:如何以编程方式将标题添加到 'pop-up'窗口?

Flutter - InheritedModel 仍然更新子项,即使它与某个方面不匹配

c# - 如何获取列表中字符串的平均出现次数

具有可扩展 ListView 项的 Android ListView