sqlite - 将输出作为“未来的实例”’”扑腾扑腾
问题描述
我正在尝试使用 Bloc 模式获取 sqlite 表中列的总和。
债务块.dart
getTotalAmount() async {
return await _debtRepository.getTotalAmt();
}
债务道.dart
Future<int> getTotalAmount() async {
final db = await dbProvider.database;
var result = await db.rawQuery("SELECT SUM(amount) FROM $debtDetailsTable");
int value = result[0]["SUM(amount)"];
return value;
}
债务存储库.dart
Future getTotalAmount() => debtDao.getTotalAmount();
当我尝试如下打印时
var total;
@override
void initState () {
super.initState();
_asyncMethod();
}
_asyncMethod() async {
var t = await debtBloc.getTotalAmount();
setState(() {
total = t;
});
}
print(total);
添加新数据时输出不更新。但是如果回到主屏幕并来到相应的屏幕值正在更新。
请以正确的方式指导我。提前致谢
解决方案
在打印之前先等待您的方法。
var total = await debtBloc.getTotalAmount(); // await here
print(total); // should now print some int value
推荐阅读
- html - 路径上的文本,ViewBox 裁剪字母
- chakra - 是否可以修改 Chakra UI 的 rem 大小?
- python - Python Tkinter - 用函数外的熊猫读取函数内的值
- php - 坚持如何修复 RegExpression 以将电子邮件解析为名称和地址
- javascript - 重置用户密码的云功能不起作用
- javascript - 为什么我的破折号/连字符在 onkeup javascript 后消失
- azure - 如何使用 Microsoft Graph API 在 Azure AD 中显示用户资源类型的管理器
- python - 无法在 pyplot 图表中按月对 x 轴进行分组(Python)
- c - 线性搜索算法(错误)
- ruby-on-rails - 什么时候使用 `ActionCable::Channel::Streams#stream_from` 而不是 `#stream_for` 更好?