【问题标题】:How to render list inside list in flutter?如何在颤动中呈现列表内的列表?
【发布时间】:2025-12-17 12:20:04
【问题描述】:

我正在创建一个应该显示团队列表的颤振应用程序,每个团队都是一个包含类似项目的对象

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&lt;dynamic&gt;' is not a subtype of type 'List&lt;Widget&gt;'

我已经四处搜索,但其他响应试图修复类型,但这导致我陷入尝试修复我不理解的错误的无限循环。

有人有任何提示吗?提前致谢

【问题讨论】:

    标签: list dart flutter widget


    【解决方案1】:

    删除{}

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

    说明

    =&gt; 表示return=&gt; { ... } 表示返回一个函数(动态)。这就是为什么它被检测为List&lt;dynamic&gt;

    【讨论】:

    • 感谢您的帮助,但这不起作用。我收到与上述相同的错误。
    • 虽然,在第二次尝试中,您的回答为我打开了另一组可能性,并且通过使用您的代码并在参数players 之前添加列表,它起作用了。非常感谢!
    • 请帮我解决这个问题*.com/questions/60432234/…
    最近更新 更多