gpt4 book ai didi

sqlite - Flutter Text ("${sqlite_tbl[0][' body']") 抛出 NoSuchMethodError

转载 作者:IT王子 更新时间:2023-10-29 07:06:31 25 4
gpt4 key购买 nike

在这个 Flutter 项目中,我将本地 sqlite 数据库中的信息显示到页面上。网上有很多使用ListView.builder和ListTile显示的例子。但是,我不是这种情况,我希望能够访问和显示表中的特定列。

首先,我创建了一个 List 实例,然后像这样将该实例设为 rawQuery。

List<Map> sqlite_tbl = db.rawQuery('SELECT * FROM sample_table');

然后,在页面的构建方法中,我将一些文本放在 appBar 和 SingleChildScrollView 中,这是我从数据库中检索的文本,就像这样......

child: new Text("${sqlite_tbl[0]['title']}",

child: new Text("${sqlite_tbl[0]['body']}",

当我从上一页访问此页面时,出现 NoSuchMethodError 红色闪烁一两秒钟,然后该页面将正常显示。在我的运行日志中,它会说 The method '[]' was called on null.接收者:null 尝试调用:。所以我假设它是我检索文本的 [0],但是一旦我删除它,它就会说类型参数类型“String”不能分配给参数类型“int”。

有人知道检索此数据的正确方法或如何解决此问题吗?如果您需要查看我的更多代码,请告诉我。

最佳答案

方法db.rawQuery将返回类型 Future<List<Map>> .您应该将列表的实例化更改为:

List<Map> sqlite_tbl = await db.rawQuery('SELECT * FROM sample_table');

然后您必须调用 setState .

更好的方法是:

List<Map> sqlite_tbl;
bool initialized;

initState() {
super.initState();
initialized = false;
_getData();
}

_getData() {
db.rawQuery('SELECT * FROM sample_table').then((results) {
setState(() {
sqlite_tbl = results;
initialized = true;
});
}).catchError((e) { // do something });
}

然后您将根据 initialized 的值构建您的 UI .

关于sqlite - Flutter Text ("${sqlite_tbl[0][' body']") 抛出 NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51502113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com