Flutter 我想在当前屏幕运行时导航到另一个屏幕

时间:2021-01-15 23:30:28

标签: firebase flutter dart google-cloud-firestore flutter-layout

我想在当前屏幕运行时导航到另一个屏幕。如果在 Firestore 集合中添加新文档,则应用程序监听它并导航到另一个页面。请帮帮我...

2 个答案:

答案 0 :(得分:0)

我认为传统导航器不可能做到这一点,但是,“模拟”类似内容的一种方法是使用 IndexedStack,它可以同时加载两个小部件,您只需选择一个索引即可。当我需要一个漂亮的启动画面并希望我的其他小部件尽早加载时,我已经成功地使用了它。

但是,在我看来,您的问题更多地与维护状态有关。我建议在 lifting state up 上阅读 Flutter 的页面。您可以在 MaterialApp 上方使用类似 Provider 之类的东西来保持数据加载,即使您的小部件不在屏幕上,或者只是使用导航器参数在页面之间来回传递您的状态(我不建议这样做)。< /p>

答案 1 :(得分:0)

你可以试试这样的

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