Моя цель с помощью этой функции - вернуть целое число, представляющее все привычки, совершенные пользователем. Моя структура баз данных представляет собой набор привычек, каждая из которых имеет подколлекцию, содержащую свою историю Приведенная ниже функция использует список привычек, и, используя идентификатор привычки, получает поток истории этой привычки. Моя проблема в том, что, когда я пытаюсь просмотреть историю для каждой привычки, она останавливается на await for
. Любой совет был бы оценен, я все еще пытаюсь полностью понять потоки / асинхронные функции.
Future<int> getCompleteHabits(User user, List<Habit> habits) async {
int completed = 0;
if(habits.isNotEmpty) {
for(Habit habit in habits) {
Stream<List<HabitHistory>> streamHistory = db.streamHabitHistory(user, habit.id);
await for(var h in streamHistory){
print(habit.title);
print(h);
}
print("test");
}
}
return completed;
}
Эта функция добавит к завершенной переменной, однако, так как я не могу получить доступ ко всей истории, которую мне еще предстоит сделать итак.
Эта функция выводит на консоль следующее: она не попадает в флаттер print("test")
.
: ложитесь в постель к 23:30
трепетание: [Экземпляр «HabitHistory», Экземпляр «HabitHistory», Экземпляр «HabitHistory», Экземпляр «HabitHistory», Экземпляр «HabitHistory»]