首页 > 解决方案 > 将输出作为“未来的实例”’”扑腾扑腾

问题描述

我正在尝试使用 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);

添加新数据时输出不更新。但是如果回到主屏幕并来到相应的屏幕值正在更新。

请以正确的方式指导我。提前致谢

标签: sqliteflutterdart

解决方案


在打印之前先等待您的方法。

var total = await debtBloc.getTotalAmount(); // await here
print(total); // should now print some int value

推荐阅读