【发布时间】:2020-05-06 16:46:37
【问题描述】:
我使用这个函数的目标是返回一个整数,表示用户完成的所有习惯。我的数据库结构是习惯的集合,每个习惯都有一个包含其历史的子集合。下面的函数利用了一个习惯列表,并使用习惯的 ID 获取该习惯的历史流。我的问题是,当我尝试遍历每个习惯的历史记录时,它会停在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")。
flutter:晚上 11:30 之前上床睡觉
flutter:['HabitHistory' 实例,'HabitHistory' 实例,'HabitHistory' 实例,'HabitHistory' 实例,'HabitHistory' 实例]
【问题讨论】:
标签: flutter dart google-cloud-firestore