【发布时间】:2021-03-12 02:08:07
【问题描述】:
所以我有一个菜单,我想简单地从数据库(版本)中获取一个值来显示......
ListTile(
contentPadding: EdgeInsets.fromLTRB(20, 30, 0, 0),
title: FutureBuilder<Text>(
future: getTextDbVersion(context),
builder:
(BuildContext context, AsyncSnapshot<Text> snapshot) {
return snapshot.hasData ? snapshot.data : Text("not ready");
}))
当然,我得到的是一个带有文本的 Text 小部件
'Future 的一个实例'
getTextDbVersion(context) 方法现在有点好笑,因为我正试图找到自己的方法,但就是这样。
Future<Text> getTextDbVersion(context) async {
var val = getDbVersion(context);
print(val);
return Text(val.toString());
}
Future<int> getDbVersion(context) async {
final ContactTrackerApp app = Provider.of<ContactTrackerApp>(context);
var storage = await app.storage;
if (storage == null) {
return null;
}
return await storage.version();
}
我对这个完整的异步编程有点陌生,现在我知道我是如何将一个该死的值放入字符串中
任何帮助表示赞赏
【问题讨论】:
-
只是好奇,是 var val = getDbVersion(context);应该是 var val = await getDbVersion(context); ?因为您正在等待 db 版本进行打印。
-
我删除了那个 getText 方法,只是我想弄清楚
标签: sqlite flutter dart asynchronous