Flutter:正确查看嵌套列表数据:已编辑 #2

Flutter : View nested list data correctly : Edited #2

在我之前的问题中,我成功地收到了嵌套列表并将它们插入到列表中,现在当我想展示它们时,我使用了下面的这种方式: 打印时列表:

[
{m_date: 2020-09-01,
 games: [
    {id: 1,
    s_id: 1,
    w_id: 1,
    league_name: 1,
    home_team: MNU,
    away_team: MCI,
    home_goals: 0,
    away_goals: 0,
    m_hour: 22:42:00,
    home_ex: 4,
    away_ex: 3
     },
    {id: 2,
     s_id: 1,
     w_id: 1,
     league_name: 1,
     home_team: ARS,
     away_team: CHL,
     home_goals: 0,
     away_goals: 0,
     m_hour: 23:43:00,
     home_ex: 1,
     away_ex: 2
     }]}, 
{m_date: 2020-09-02,
 games: [{
     id: 4,
     s_id: 1,
     w_id: 1,
     league_name: 3,
     home_team: BAR,
     away_team: RMA,
     home_goals: 0,
     away_goals: 0,
     m_hour: 23:44:00,
     home_ex: 0,
     away_ex: 3}, 
    {id: 3,
     s_id: 1,
     w_id: 1,
     league_name: 2,
     home_team: JUV,
     away_team: ROM,
     home_goals: 0,
     away_goals: 0,
     m_hour: 22:43:00,
     home_ex: 1,
     away_ex: 4}]}]

return ListView.builder(
              itemCount: snapshot.data.length,
              itemBuilder: (ctx, index) {
                return Column(
                  children: [
                    Text(snapshot.data[index].m_date),
                    ListView.builder(
                        shrinkWrap: true, // 1st add
                        physics: ClampingScrollPhysics(),
                        itemCount: snapshot.data[index].games.length,
                        itemBuilder: (ctx, index2) {
                          return Table(columnWidths: {
                            0: FlexColumnWidth(4),
                            1: FlexColumnWidth(3),
                            2: FlexColumnWidth(3),
                            3: FlexColumnWidth(3),
                            4: FlexColumnWidth(3),
                            5: FlexColumnWidth(3),
                            6: FlexColumnWidth(3),
                            7: FlexColumnWidth(2),
                            8: FlexColumnWidth(1),
                          }, children: [
                            TableRow(children: [
                              Container(child: Text('y')),
                              Container(child: Text('y')),
                              Container(child: Text('y')),
                              Container(child: Text('y')),
                              Container(child: Text('y')),
                              Container(child: Text('y')),
                              Container(child: Text('y')),
                              Container(child: Text('y')),
                              Container(child: Text('y')),
                            ])
                          ]);
                        })
                  ],
                );
              },
            );

列表现在包含两个日期行和每个日期的两个嵌套行,这意味着视图必须是这样的

date1
   yyyyyyyyy
   yyyyyyyyy
date2
   yyyyyyyyy
   yyyyyyyyy

但对我来说,视图是每个日期的嵌套列表(游戏)视图的所有数据,例如这张图片:

问题出在第二个 ListView 构建器中,它获取游戏的所有数据,我只想获得依赖于第一个 ListView 构建器的游戏 m_date 第二个循环的长度必须是 2(作为我的数据)但它需要所有游戏长度 4

任何有想法的人都可以帮助我,谢谢

我自己解决了。首先,我将日期添加到游戏列表以将其与主列表的日期进行比较。然后我改变了显示数据的方式并添加 if 语句以仅显示同一日期的值:

    return FutureBuilder(
        future: getmatchs(),
        builder: (ctx, snapshot) {
          if (snapshot.connectionState == ConnectionState.none ||
              snapshot.connectionState == ConnectionState.waiting ||
              snapshot.connectionState == ConnectionState.active ||
              snapshot.data == null) {
            return Center(
              child: CircularProgressIndicator(strokeWidth: 6.0),
            );
          } else {
            var list = snapshot.data;
            return ListView(
              children: list.map<Widget>((item) {
                return Column(children: [
                  Text(item.m_date),
                  for (var i = 0; i < games.length; i++)
                    if (item.m_date == item.games[i].my_date)
                      Table(
                        columnWidths: {
                          0: FlexColumnWidth(4),
                          1: FlexColumnWidth(3),
                          2: FlexColumnWidth(3),
                          3: FlexColumnWidth(3),
                          4: FlexColumnWidth(3),
                          5: FlexColumnWidth(3),
                          6: FlexColumnWidth(3),
                          7: FlexColumnWidth(2),
                          8: FlexColumnWidth(1),
                        },
                        children: [
                          TableRow(children: [
                            Container(child: Text('y')),
                            Container(child: Text('y')),
                            Container(child: Text('y')),
                            Container(child: Text('y')),
                            Container(child: Text('y')),
                            Container(child: Text('y')),
                            Container(child: Text('y')),
                            Container(child: Text('y')),
                            Container(child: Text('y')),
                          ])
                        ],
                      )
                ]);
              }).toList(),
            );
          }
        });
  }
}