Flutter:Sqflite 在 snapshot.data.length 的未来构建器上出错

Flutter : Sqflite get error on future builder with snapshot.data.length

我有一个使用 sqflite 的应用程序,我在 DataBaseHelper 中有这个获取数据的功能 class:

getMatchs() async {
    final _db = await db;
    var result = await _db!.query('mathcTable');
    return result;
  }

在 getX 控制器中,我有这个方法来获取数据:

get matchs => getMatchs();
  getMatchs() async {
    var list = await DataBaseHelper.instance.getMatchs();
    return list;
  }

在视图页面上,我想使用从控制器返回的列表:

final GameController _game = Get.put(GameController());

然后使用未来的构建器:

body: FutureBuilder(
          future: _game.matchs,
          builder: (context, snapshot) {
            var list = snapshot.data

            ;
            if (snapshot.hasData && snapshot.data != null) {
              return ListView.builder(
                  itemCount: list!.length,
                  itemBuilder: (context, index) {
                    return Text('p');
                  });
            } else {
              return Text('waiting data');
            }
          })

此页面在 list.length 上给出错误,如图所示:

编辑 当我打印 snapshot.data 我得到这个:

[
{id: 1,
 playerOne: ,
 playerTwo: ,
 setCounts: 3,
 gameCounts: 6,
 firstPlayerserve: 1,
 isSuperTieBreake: 0},
 {id: 2,
 playerOne: ,
 playerTwo: ,
 setCounts: 3,
 gameCounts: 6,
 firstPlayerserve: 1,
 isSuperTieBreake: 0}
]

只需在列表视图中传递的快照之前添加 AsyncSnapshot 即可让 dart 识别它。像这样:

body: FutureBuilder(
          future: _game.matchs,
          builder: (context, AsyncSnapshot snapshot) {
            var list = snapshot.data

            ;
            if (snapshot.hasData && snapshot.data != null) {
              return ListView.builder(
                  itemCount: list!.length,
                  itemBuilder: (context, index) {
                    return Text('p');
                  });
            } else {
              return Text('waiting data');
            }
          })