当我开始在flutter中编写一个新的应用程序时,一开始一切都很顺利,但当项目长大后,它开始变得混乱,然后我决定删除项目重新开始。我搜索了干净的架构和设计模式,但我发现了很多选择,如DDD,BLoC,以及如此多的模式和架构,我不知道什么是最好的事情坚持每一次我进入一个研究过程,将永远持续下去,所以我想听听你们作为专业人士和Maven编码什么是最好的事情坚持,我应该做什么?请给一些建议,如何处理大项目的flutter?非常感谢
fykwrbwg1#
首先,Flutter项目架构是非常主观的,因为它取决于您的需求。但我们可以找到一些一般原则:1.使用路由器系统:默认情况下,Flutter提供了一个Navigator API,让你可以在应用中导航。但是,没有真实的的结构,当你想使用推送通知将用户重定向到你的应用时,你会卡住。GoRouter包提供了一个非常好的路由器系统,谷歌团队正在考虑将其实现到Flutter SDK中。1.利用状态管理库:当你的应用程序变得更大时,你会希望更精确地处理应用程序的状态。这样你就可以轻松地刷新和更新页面的内容,而无需重新加载内容。为了做到这一点,有很多包:
1.处理数据(像API JSON响应,或SQLite查询)。干净架构的很大一部分是你管理数据的方式。如果你使用API你必须处理JSON序列化。在一个小的应用程序中你可以做你自己的系统来反序列化数据,但是你必须实现大量的样板代码。我推荐使用build_runner和json_serializable包。这个插件堆栈让您可以轻松构建数据类,而无需担心序列化:BuildRunner将为您生成此代码。1.使用结构化的文件夹系统。我个人使用DDD模式,因为你可以很容易地将你的数据从你的应用逻辑中分离出来,这提高了你的可维护性。Schema of a Flutter Clean Architecture with DDD我希望这将帮助您开发自己的体系结构。作为总结,这里有一些关于这个主题的有用资源。https://devmuaz.medium.com/flutter-clean-architecture-series-part-1-d2d4c2e75c47https://docs.flutter.dev/development/data-and-backend/jsonhttps://codewithandrea.com/articles/flutter-project-structure/
hpcdzsge2#
为你的项目选择层优先或特性优先的方法作为第一步是个好主意。提到的Andrea文章的链接是一个很好的链接-https://codewithandrea.com/articles/flutter-project-structure/然后你可以选择是使用提供者还是块和/或腕尺来使用Riverpod,你可以用所有这些来编写一个应用程序,所以我会建议先尝试它们,然后再做出选择,比如我只使用腕尺来编写a Flutter app。接下来,你可以选择路由库,让生活更容易与导航/从屏幕,深度链接等,无论是auto_route或go_router是好的。此外,利用json序列化库、数据类库、可注入库,因为它们可以保存大量的样板代码。
2条答案
按热度按时间fykwrbwg1#
首先,Flutter项目架构是非常主观的,因为它取决于您的需求。但我们可以找到一些一般原则:
1.使用路由器系统:默认情况下,Flutter提供了一个Navigator API,让你可以在应用中导航。但是,没有真实的的结构,当你想使用推送通知将用户重定向到你的应用时,你会卡住。GoRouter包提供了一个非常好的路由器系统,谷歌团队正在考虑将其实现到Flutter SDK中。
1.利用状态管理库:当你的应用程序变得更大时,你会希望更精确地处理应用程序的状态。这样你就可以轻松地刷新和更新页面的内容,而无需重新加载内容。为了做到这一点,有很多包:
1.处理数据(像API JSON响应,或SQLite查询)。干净架构的很大一部分是你管理数据的方式。如果你使用API你必须处理JSON序列化。在一个小的应用程序中你可以做你自己的系统来反序列化数据,但是你必须实现大量的样板代码。我推荐使用build_runner和json_serializable包。这个插件堆栈让您可以轻松构建数据类,而无需担心序列化:BuildRunner将为您生成此代码。
1.使用结构化的文件夹系统。我个人使用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/
hpcdzsge2#
为你的项目选择层优先或特性优先的方法作为第一步是个好主意。提到的Andrea文章的链接是一个很好的链接-https://codewithandrea.com/articles/flutter-project-structure/
然后你可以选择是使用提供者还是块和/或腕尺来使用Riverpod,你可以用所有这些来编写一个应用程序,所以我会建议先尝试它们,然后再做出选择,比如我只使用腕尺来编写a Flutter app。
接下来,你可以选择路由库,让生活更容易与导航/从屏幕,深度链接等,无论是auto_route或go_router是好的。
此外,利用json序列化库、数据类库、可注入库,因为它们可以保存大量的样板代码。