【问题标题】:Flutter: Should I use BloC class per page(UI/View)?Flutter:我应该每页使用 BloC 类(UI/View)吗?
【发布时间】:2019-08-17 01:55:26
【问题描述】:

作为一名 Android 开发者,我正在研究和开发一款 Flutter 应用。

我不熟悉颤振、飞镖和 BloC 架构模式。 无论如何,我正在将 BloC 模式应用到我的颤振应用程序中。

因为我学习了清洁架构,所以我也想应用清洁架构。 第一次,我根据特性分离了 BloC 类。

我的玩具应用是 Todo 应用。

所以我有一个非常简单的功能,我将 BloC 定义为:

  • 创建待办事项 > CreateTodoBloc
  • 更新待办事项 > UpdateTodoBloc
  • 获取待办事项 > GetTodosBloc
  • 删除待办事项 > DeleteTodoBloc

在我的主页 UI/View 中,显示待办事项列表,并且可以在用户完成待办事项时更新。

在这种情况下,主 UI/View 应该有两个 BloC:GetTodosBloc 和 UpdateTodoBloc

这可以显示待办事项列表,当用户点击待办事项的按钮时,待办事项会更新并保存到本地数据库中。

但问题是待办事项列表没有改变! 我的主页 ui/view 根据待办事项的完整状态显示不同的待办事项列表。

看来我的概念是错误的... 为了解决这个问题,我认为我应该根据 UI/View 使用 BloC。

那么 Home UI/View 将只有一个块对象:“HomeBloc”。

并且“HomeBloc”可能会显示用户界面并更新待办事项。

所以...

我想听听其他开发者的意见,并了解是否有其他最佳做法。

【问题讨论】:

  • Bloc 是老式的 Flutter。现在每个人都在使用包提供程序。

标签: dart flutter bloc


【解决方案1】:

希望您在很长一段时间后仍在从事 Flutter 项目。

我真的很喜欢你在 Flutter 中思考和实现干净架构的方式。

我最近一直在使用鲍勃叔叔的清洁架构原则,这令人惊讶,这是他拥有 Single Responsibility Principle 的五个原则之一,我真的认为 BLoC 是一种管理你的状态的方式,只有我对 ViewModel 的想法相同,如果您在 Google 的 AAC(Android 架构组件)中了解它,因此它们实际上不应该在其中执行任何逻辑操作。

它应该只从 UI 获取命令并将其传递给用例,这些用例应该生成逻辑,然后再次将结果返回给视图。

我刚刚制作了一个实现清洁架构原则的测试应用程序,想获得您对此的反馈,您可以通过here 访问 repo。

【讨论】:

  • 这绝对是真的,如果您像在 repo 中那样进行单元测试,那么它会包含大量代码并且需要大量时间,但我相信这对于大型应用程序和可扩展应用程序来说非常棒,因为这种架构提供了您的应用程序的可扩展性。
  • 我真诚地鼓励您观看 Robert Martin 的这段视频,了解它的好处https://www.youtube.com/watch?v=2dKZ-dWaCiU
  • “代码量很大...我相信这对于大型应用程序来说太棒了”好吧,如果大型应用程序是您的目标,那么冗长的编程风格似乎可以帮助您更快地实现该目标!! ?
  • 18:42 进入 Martin 的演讲,最后是“让我们谈谈架构”。如果这个人冗长的演示风格是他编码风格的任何迹象,那么是的,他一定是在编写“巨大的应用程序”。
  • 您只是引用了评论中不相关的部分,甚至没有提出任何观点,我非常乐意与您讨论这种方法的利弊。首先,关注点分离,每个类只有一个目的,这会使项目文件中的导航更加容易,所以正如我在原始答案中所说,在我看来 BLoC 只负责用于状态管理,这正是我使用它的目的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-18
  • 2019-08-22
  • 2021-01-19
  • 2020-04-11
  • 2020-06-14
  • 1970-01-01
相关资源
最近更新 更多