首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >目的地间传递模型

目的地间传递模型
EN

Stack Overflow用户
提问于 2021-05-16 03:44:30
回答 1查看 368关注 0票数 0

我正在开发应用程序,它使用Jetpack与Jetpack组合导航。在一个视图(目的)中,我在条目上显示列表(让我们将其称为带有模型A的视图A)。从这个视图中,用户可以转到creation视图(带有Model B的view ),在那里可以创建新的条目。在成功创建之后,我希望更新模型A中的列表,这样用户就不需要在返回查看新创建的条目后刷新View。

是否可以使用NavHost (如 )或以任何其他方式在导航目的地之间传递类?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-16 06:10:50

根据作文指导中的思考

每次可观察到的数据更新时,您的可组合对象都负责将当前的应用程序状态转换为UI。

应用状态是真理的来源。这与app体系结构指南相匹配,在该状态下,您的状态由负责实际获取、存储和缓存数据的低级组件拥有,然后这些组件将公开到UI层中。负责获取、存储和缓存数据的这一层通常称为“存储库层”。

这意味着,在导航图中的目标之间直接传递数据快照是解决问题的完全错误的方法:它创建了一个真实问题的来源(您相信在目的地或存储库之间发送的快照吗?)答案总是一样的:您的存储库应该始终是真相的来源,并且您应该,而不是,在目的地之间传递数据快照。这样,每一个使用存储库作为其真实来源的屏幕()都会自动获得最新的信息,而且从不需要“刷新”您的数据。

因此,您的体系结构将包括三个层:

  • 拥有条目列表的单个存储库。其中最简单的部分可能只是作为mutableStateOf<List<Entry>>()保存在内存中的列表,当数据用新列表更改时,您可以更新该列表。这个类将负责与服务器对话、本地缓存等。
  • (可选和最佳实践)一层ViewModels,一层用于屏幕A,另一层用于屏幕B,该层只公开该屏幕所需存储库中的一组方法(即,您的ViewModel A可能公开getEntries(),而ViewModel B可能公开createEntry(Entry)方法。
  • 屏幕A和B只关注显示从它们关联的ViewModel中检索到的数据。由于两者都在与同一个存储库层对话,创建一个条目的屏幕B将更新屏幕A将从中检索其数据的列表。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67553012

复制
相关文章

相似问题

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