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');
}
})
我有一个使用 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');
}
})