首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Firebase Cloud Messaging数据传递到当前屏幕上方的n个屏幕,并在整个应用程序中颤动

将Firebase Cloud Messaging数据传递到当前屏幕上方的n个屏幕,并在整个应用程序中颤动
EN

Stack Overflow用户
提问于 2018-09-06 20:07:20
回答 2查看 369关注 0票数 1

我在Flutter中有一个应用程序,它可以在父屏幕上提取大量数据。父屏幕被划分为几个子屏幕,而这些子屏幕又转到几个子屏幕。

现在,为了确保这不会一直从API中拉出数据,我只在根屏幕中拉出一次-这在90%的时间内都是可以的。

所有后续更新都会通过firebase云消息在整个应用程序中广播

如果我在屏幕3上,我需要更新屏幕1中的数据,这也应该更新最终将显示在屏幕2上的数据。

例如,屏幕1包含三个项目。每个项目都有自己的屏幕。

屏幕2.1用于项目1,屏幕2.2用于项目2,依此类推。

在2.1屏幕中,有n个待办事项列表。

现在,如果我打开待办事项列表,我会进入屏幕3,其中包含项目1的第一个待办事项列表的数据。

在firebase云消息传递数据通知中,我收到了这个待办事项列表的新信息,以及项目2待办事项列表1的待办事项列表中的内容。

如何维护一致性并全面更新数据?

我需要改变我的架构并使用Redux或其他类似的东西吗?

EN

回答 2

Stack Overflow用户

发布于 2018-09-06 20:34:23

这个问题实际上与维护跨应用程序的状态相关。Flutter支持多种维护状态的方法。这取决于您正在构建的是什么。

  1. :这是最简单的方法,但它有缺点,当状态必须维护时,深入到窗口小部件tree.
  2. :这个包对于跨descendants.
  3. :维护状态很有用,它是跨应用维护状态的最好方法。Flutter使用类似的流程来维护应用程序小部件树中的状态。在flutter中,所有东西本质上都是一条流。

为BLoC实现提供更多资源。Flutter Show BloC Pattern implementation

票数 0
EN

Stack Overflow用户

发布于 2018-09-06 22:15:07

非常好的问题!

您将需要一个中央“数据服务”,作为单一的真理来源。

它加载初始数据并将其存储在其中,它还会在云消息到达时更新数据,并通知所有依赖于数据的小部件数据已更改。

屏幕从不存储数据的可变副本,而是查询数据服务以获取最新数据。

根据你的应用程序的复杂性,有不同的解决方案,可以使用或不使用流。

InheritedWidget是Flutter自带的基本解决方案。您通常会有一个带有StateStatefulWidget,它用一个InheritedWidget包装您的MaterialApp,以便将State广播到您的屏幕。

scoped_model是InheritedWidget的薄包装器,但基本上提供了相同的功能。同样,模型提供者必须包装您的MaterialApp以使其在所有屏幕上都可用。

BLoC和flutter_redux是更高级的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52203763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档