【问题标题】:How can I notify other screen to re-fetch when there is a mutation?发生突变时如何通知其他屏幕重新获取?
【发布时间】:2023-03-27 04:47:01
【问题描述】:

我有一些要更改后端数据的 api。

每个屏幕都有自己的状态,我开始在 initState 中获取数据,并在可用时将其存储到状态。

问题是当我知道他们的状态数据现在已经过时时,如何通知后台堆栈中的屏幕重新获取?当我回到他们那里时,他们不会被重新获取,因为不会再次调用 initState。

我来自React Native,那里有react-query,当我使相应的缓存失效时,它会重新获取并重建屏幕。 Flutter中有类似的东西吗?

【问题讨论】:

    标签: flutter


    【解决方案1】:

    你可以试试这个,请把它放在你的第一个屏幕上。

    Navigator.of(context).pushNamed('/someRoute').then((completion){
       your initstate function
    });
    

    参考:https://api.flutter.dev/flutter/widgets/Navigator/push.html

    如果您需要通知多个屏幕,请改用https://pub.dev/packages/flutter_bloc(还有其他选项)。

    【讨论】:

    • 这会导致很多不必要的refetch,不是吗?我只想在发生突变时重新获取。
    • 实际上,我不一定是通过 pushNamed 导航离开屏幕。我可以改变一个选项卡中的数据,并影响另一个选项卡中的数据。
    猜你喜欢
    • 2013-05-06
    • 2018-09-21
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多