我正在开发一个 Flutter 应用程序,使用 flutter_bloc 包进行状态管理。我有一个页面需要从多个 API 端点获取数据。
场景:
页面显示来自不同来源的数据,每个来源都需要单独的 API 调用。 我正在考虑是使用单个 BLoC 来管理所有这些 API 调用,还是为每个 API 调用创建单独的 BLoC。 问题:
单一 BLoC 方法:
如何在单个 BLoC 内有效管理多个异步操作? 将不同的 API 响应组合成统一状态的最佳实践是什么?
多个 BLoC 方法:
如何跨多个 BLoC 协调状态并处理错误? 我可以使用什么策略来聚合同一页面上多个 BLoC 的数据?
目前的方法:
我使用了 copyWith 方法通过不同 API 调用的响应来更新状态,但我担心这种方法的可维护性。
其他背景:
我想确保我的方法是可扩展和可维护的。 您的经验中的任何见解、示例或模式将不胜感激!
我最初尝试使用单个 BLoC 来处理页面的所有 API 调用。我实现了 copyWith 方法,以使用来自不同 API 的响应来更新状态。我的期望是这种方法能够将所有数据整合到一个统一的状态中,并使状态管理变得更简单。
但是,我在维护可读性和可扩展性方面遇到了问题。当我尝试处理不同的响应和潜在错误时,状态管理代码变得复杂。事实证明,使用 copyWith 将多个 API 响应组合成一个状态具有挑战性,随着页面复杂性的增加,我担心这种方法的可维护性。
我还考虑为每个 API 调用创建单独的 BLoC,以隔离问题并单独管理每个响应。我的期望是,这将使代码更加模块化并且更易于调试。然而,我一直在努力解决如何在同一页面上协调和聚合来自多个 BLoC 的数据。
我正在寻找有关如何有效管理多个异步操作、维护干净可读的代码以及有效组合不同 API 响应的指导。
我看到的最佳答案来自这篇文章,linkhttps://medium.com/@hmtamim/composite-bloc-in-flutter-streamlined-complex-screens-with-multi-bloc-b5d5fbfa3aba。他从摇篮到您可以自己决定是否使用表示层或领域层的程度进行了解释。