Получение выхода как «Экземпляр Future <dynamic>» в флаттере - PullRequest
1 голос
/ 01 ноября 2019

Я пытаюсь получить сумму столбца в таблице sqlite, используя шаблон Bloc.

debt_bloc.dart

getTotalAmount() async {
    return await _debtRepository.getTotalAmt();
  }

debt_dao.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;
  }

debt_repositary.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);

Выход не обновляется при добавлении новогоданные. Но если вернуться на домашний экран и перейти к соответствующему экрану, значение обновляется.

Пожалуйста, направьте меня правильно. Заранее спасибо

1 Ответ

1 голос
/ 01 ноября 2019

Перед печатью дождитесь вашего метода.

var total = await debtBloc.getTotalAmount(); // await here
print(total); // should now print some int value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...