gpt4 book ai didi

bloc 的 flutter bloc 最佳实践

转载 作者:行者123 更新时间:2023-12-05 04:54:13 33 4
gpt4 key购买 nike

我目前正在创建一个原型(prototype)项目,它实现了很多功能,如导航管理、错误管理、存储管理等

我现在面临一个关于 Bloc 的问题。我想知道哪些是使用 blocs 的最佳实践,事实上,假设我有一个产品系统,如产品列表、产品详细信息、选择产品。

我是否需要只有 一个 bloc 可以像 3 个事件一样

  1. 获取列表产品
  2. 获取产品编号
  3. 选择产品

具有不同的状态,例如 GetListInitial、GetProductInitial、SelectProductInitial 以及“已加载”、“已完成”等其他状态

然后在我的 2 个页面中,我可以使用一个 BlocConsumer,它在 listProduct 页面 GetListInitial, GetListFinished 和产品详细信息页面 GetProductInitial, GetProductFinished 中监听?我还可以在同一页面中使用 2 个 BlocConsumer,它们正在监听不同的状态,例如列出产品,然后选择一个。

或者

我是否需要拥有三个不同的 Bloc ,它们可以参加 1 个事件并对每个 Bloc 执行相同的过程。

我们可以认为第一种解决方案可以按功能对事件进行分组,但实际上并没有尊重 Flutter 想要的 widget,因为在我的示例中,如果发生一个事件,将处理 3 个 BlocConsumer,但只有 1 个会执行操作。

但是在第二个解决方案中,这意味着如果我有一个巨大的应用程序,那么我会有非常非常多的 Bloc ,对吗?哪个是最佳解决方案?

谢谢

最佳答案

我认为一个好方法是为每个功能创建一个 bloc,以及一个存储库或存储空间。

我通常通过将对象的唯一 ID 传递给小部件的构造函数来进行导航,然后使用自己的 block 打开模态页面,处理加载描述等。

例如,我需要加载产品列表。我用 RepositoryProvider 包装我的主产品屏幕,它提供产品存储库。存储库包含我需要的所有逻辑(获取、排序、从具有唯一 ID 的项目列表中取出一项等)

然后,我用 bloc 提供程序包装我的页面,并通过构造函数传递我的存储库,所以现在 bloc 可以访问我的存储库。 Bloc 只管理 repo 到 ui 的连接。在我的项目列表中,我传递了项目的 ID,所以如果我点击项目,我可以将它的 ID 传递给另一个执行不同逻辑的 Bloc (例如,打开带有描述的模式页面)

关于bloc 的 flutter bloc 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65828352/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com