针对特定用例在 flutter 中的不同页面上维护相同的状态

ANU*_*JAN 5 state-management flutter flutter-provider flutter-bloc flutter-state

我知道颤振中的状态管理存在某些问题,但它们似乎都不能解决我的用例。

最近我正在构建一个基于电子商务的应用程序,并遇到了这种对状态管理的真正需求。我有2页,

  1. 其中一个是产品页面,我在其中将产品添加到购物车。
  2. 第二个是购物车页面,我在其中看到最近添加到购物车的产品。

产品和购物车页面

用户可以将产品添加到购物车,然后导航到购物车。在购物车页面中,他们还可以增加或减少商品的数量。

正如您所看到的,最初黄色商品被添加到购物车中,数量为 3,但在购物车页面中,用户按下 (-) 按钮,将数量减少到 1。现在,如果用户按下后退按钮,则状态为黄色产品在产品页面上仍为 3。与粉色产品类似的情况。

因此,我尝试使用正常的 setState 和一些全局数据结构来解决这个问题来跟踪数量。但随着我的应用程序变得越来越大,跨页面维护状态真的很困难。我读过不同的状态管理解决方案,例如 redux、BloC 模式、Provider,...但我不清楚如何在我的用例中使用它们。有没有有经验的人帮我把石头敲碎,帮我消化一下?

任何有关如何解决此问题的示例代码和解释将不胜感激!

希望我的问题是清楚的!

Dmi*_*hov 0

状态实际上是控制一个屏幕状态的工具,而不是数据存储。在这种情况下,您可能不应该使用状态,而应该使用数据库。当用户撰写购物车时,您可以在用户设备 SQLite 或云(Firebase?)中创建购物车记录。乍一看,这似乎有些过分,但请考虑一下,除了拥有可以从任何地方访问的持久存储之外,您还可以获得用户行为数据,即他们添加了什么、如何进行以及有多少人放弃了。

至于技术方面,在 Flutter 中通常使用 Provider。对我来说,最大的好处就是业务逻辑封装。如果不这样做,您的特定数据库逻辑将遍布表示层,如果您想更改某些内容,您就会遇到麻烦:)

这是一篇关于提供商的好文章