【发布时间】:2021-04-21 00:01:05
【问题描述】:
我想在当前屏幕运行时导航到另一个屏幕。如果在 Firestore 集合中添加新文档,则应用程序会监听它并导航到另一个页面。请帮帮我...
【问题讨论】:
标签: firebase flutter dart google-cloud-firestore flutter-layout
我想在当前屏幕运行时导航到另一个屏幕。如果在 Firestore 集合中添加新文档,则应用程序会监听它并导航到另一个页面。请帮帮我...
【问题讨论】:
标签: firebase flutter dart google-cloud-firestore flutter-layout
我认为这对于传统的导航器是不可能的,但是,“模拟”类似事物的一种方法是使用 IndexedStack,它可以保持两个小部件的加载,并且您可以简单地选择一个索引。当我需要一个精美的初始屏幕并希望我的其他小部件尽早加载时,我已经成功地使用了它。
但是,在我看来,您的问题更多地与维护状态有关。我建议在lifting state up 上阅读 Flutter 的页面。您可以在 MaterialApp 上方使用Provider 之类的东西来保持数据加载,即使您的小部件不在屏幕上,或者只是使用导航器参数在页面之间来回传递您的状态(我不建议这样做)。
【讨论】:
你可以试试这样的
void initState() {
listenFirestore();
super.initState();
}
listenFirestore() async {
Firestore.instance
.collection('availableDates')
.snapshots()
.listen((data) => {
// here you can call navigator method
});
}
监听 Firebase 的变化并调用函数导航到新屏幕。
如果您使用的是 Flutter Bloc,您可以使用 BlocListener 执行此操作。
BlocListener 官方doc.
【讨论】:
initState 正在调用一次,但 listenFirestore 正在持续监听 Firestore 更改。