【发布时间】:2021-12-29 14:16:01
【问题描述】:
我有一个颤振应用程序,我在 main.dart 中使用 StreamProvider,如下所示:
...
StreamProvider(
catchError: (context, error) {
print(error);
},
initialData: null,
create: (context) => _quizService.getCurrentQuestionStream()),
...
在应用程序中,我有一个名为 QuizQuestion 的集合,每个文档都有一个日期作为它的 id,例如 2021-12-15,因此应用程序每天都应该获取当天的 QuizQuestion。我的流函数如下所示:
Stream<QuizQuestion> getCurrentQuestionStream() {
String currentDate = DateFormat('yyyy-MM-dd').format(DateTime.now());
try {
return _firebaseFirestore
.collection("QuizQuestion")
.doc(currentDate)
.snapshots()
.map((doc) => QuizQuestion.fromJson(doc.data()));
} catch (e) {
return e.message;
}
}
这可以获取当天的 QuizQuestion,但是如果用户从一天到下一天打开应用程序,流函数仍然“订阅”以获取上一个日期,因为它不会定义 @987654324再次@变量。我正在尝试弄清楚如何解决这个问题,是否有一些方法可以在 Flutter 中监听一天的变化以使用新日期重新初始化流,还是我需要在这里重新考虑后端?
【问题讨论】:
标签: firebase flutter dart google-cloud-firestore