Flutter 中的设计模式和清洁架构

Design patterns & Clean architecture in flutter

当我开始用 flutter 编写一个新的应用程序时,一开始一切顺利,但是当项目长大时它开始变得混乱,然后我决定删除项目重新开始。 我搜索了干净的架构和设计模式,但我发现了很多选择,例如 DDD、BLoC 以及如此多的模式和架构,我不知道每次进入持续的研究过程时最好坚持什么永远。 因此,作为专业人士和专家编码员,我想听听您的意见,最好坚持什么是最好的,我应该怎么做?请就如何在 flutter 中处理大项目提出一些建议? 非常感谢

首先,Flutter 项目架构是非常主观的,因为它取决于您的需求。 但是我们可以找到一些通用的原则:

  1. 使用路由器系统:默认情况下,flutter 提供一个 Navigator API 让您在应用程序中导航。但是没有真正的结构,当你想使用推送通知将用户重定向到你的应用程序时,你会被卡住。 GoRouter 包提供了一个非常好的路由系统,Google 团队正在考虑将其实现到 Flutter SDK 中。

  2. 利用 StateManagement 库:当您的应用程序变得更大时,您将希望更精确地处理应用程序的状态。因此,您将能够轻松刷新和更新页面内容,而无需重新加载内容。要做到这一点,有很多包:

  • BLoC
  • 提供商
  • GetX
  1. 处理数据(如 API JSON 响应,或 SQLite 查询)。干净架构的很大一部分是您管理数据的方式。如果你使用 API 你必须处理 JSON 序列化。在一个小应用程序中,您可以使用自己的系统来反序列化数据,但您必须实现大量样板代码。我建议使用 build_runner 和 json_serializable 包。这一堆插件让您可以轻松地构建数据 类 而无需担心序列化:BuildRunner 将为您生成此代码。

  2. 使用结构化的文件夹系统。我个人使用 DDD 模式,因为你可以很容易地将你的数据从你的应用程序逻辑中分离出来,这提高了你的可维护性。

Schema of a Flutter Clean Architecture with DDD

希望这对您开发自己的架构有所帮助。最后,这里有一些关于此主题的有用资源。

https://devmuaz.medium.com/flutter-clean-architecture-series-part-1-d2d4c2e75c47

https://docs.flutter.dev/development/data-and-backend/json

https://codewithandrea.com/articles/flutter-project-structure/