【问题标题】:Flutter I want navigate to another screen while the current screen running颤振我想在当前屏幕运行时导航到另一个屏幕
【发布时间】:2021-04-21 00:01:05
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我认为这对于传统的导航器是不可能的,但是,“模拟”类似事物的一种方法是使用 IndexedStack,它可以保持两个小部件的加载,并且您可以简单地选择一个索引。当我需要一个精美的初始屏幕并希望我的其他小部件尽早加载时,我已经成功地使用了它。

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

    【讨论】:

    • 好的,当前屏幕是否处于活动状态都不是问题。实际上,当在 Firestore 中创建新文档时,是否有任何方法可以在 Firestore 更改时始终保持不变?如果发生变化,呼叫屏幕会自动调用,即使当前屏幕处于活动或非活动状态。请回答我。
    【解决方案2】:

    你可以试试这样的

    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.

    【讨论】:

    • 我用过,但它不起作用。而且您已经在初始化状态下使用它,它只会在调用 screen 时调用一次。
    • initState 正在调用一次,但 listenFirestore 正在持续监听 Firestore 更改。
    猜你喜欢
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-29
    • 2010-11-09
    • 2022-06-22
    • 2018-11-26
    相关资源
    最近更新 更多