老铁记得 转发 ,猫哥会呈现更多 Flutter 好文~~~~
微信 flutter 研修群 ducafecat
原文
参考
- pub.dev/packages/fl…
- pub.dev/packages/ch…
- pub.dev/packages/js…
- dart.dev/guides/lang…
- plugins.jetbrains.com/plugin/1240…
正文
大多数时候你必须为你的应用程序的技术债务付款。如果你在 MVP 之后没有良好的体系结构,那么现在是时候停下来,重构一下,让你的未来变得更加容易。事实上,在没有架构的情况下编写较小的应用程序更容易---- 很难不同意这一点---- 但是作为一个成熟的技术专家来考虑。
测试覆盖率,设计模式,代码分析,这些都是我正在考虑的。本文将介绍我们如何在提高代码质量和团队愉悦感的同时,交付出色的应用程序。
从架构开始
Provider, BLoC, Redux ーー如果这些词听起来不熟悉,请在继续前进之前对它们有基本的了解。
它们都有优点和缺点,你可以自己选择。
拥有 Flutter 的知识和如何人们已经适应项目结构 BLoC 似乎是最简单的方式开始。
恕我直言,展示和理解 BLoC 如何工作的最好方式是看下面的图表。
- 表示层将事件发送到 BLoC
- 数据层异步执行较长的操作,例如从 API 或数据库获取数据
- 对用户界面产生返回值
就这么简单。
自己实现 BLoC 模式这真的是很好的锻炼,你应该一次性完全理解它背后的流程。如果你已经这样做了
然后使用..。
BLoC 库
幸运的是,社区没有让人失望。你不必每次都写 BLoC,只需使用这个方便的 library ー FlutterBloc。
我想指出几个关键特征:
- Event — 没有样板的事件-状态通信,
- Dependency 依赖注入通过 BlocProvider,
- BlocBuilder 根据接收的状态构建小部件,
- BlocDelegate 使全局处理错误更加容易,
- BLoC 可以(也应该)进行测试
pub.dev/packages/fl…
采用 REST API
如果你创建了一个移动应用程序,你将连接到一个远程数据源。最常用的方法是 REST api 和 JSON。当然,你已经这样做了很多次,所以没有更多的解释。
来自 Android world 的消息表明你已经使用过 Retrofit、 GSON 或莫希 JSON 转换器。这些真的是非常棒的工具。
Flutter 中使用 chopper 库
pub.dev/packages/ch…
在这两种情况下,您都需要为您的 API 定义抽象类,并使用 flutter pub run build_runner build
生成它。
接下来,没有类似 GSON 的库可以将 JSON 转换为 POJO。您需要编写自己的映射器函数,或者使用 json_serializable
,它通过注释 Dart 类自动生成转换到 JSON 和从 JSON 转换的代码。这个过程本身非常简单,你肯定会习惯的。
pub.dev/packages/js…
本地持久化
在大多数情况下,当需要缓存我们的数据时,Sqflite 是我们的首选。它只是一个 SQLite Dart 实现,支持:
- 原始 SQL 查询,
- 插入/查询/更新/删除的方便助手,
- 批次ー避免性能问题。
分析代码
在项目中拥有并保持代码样式对于团队来说可能是至关重要的。与体系结构一样,它也是维护项目和团队成员之间的质量、一致性的关键因素。
默认情况下,ide 集成了默认的静态分析,您可以根据需要扩展和调整这些分析。在他们的文档中很好地描述了 Effective 有自己的线头规则ーー Effective Dart。如果您喜欢这种风格(我确实喜欢) ,来自 Google 的开发团队就创建了一个带有这种规则集的包(pedantic | Dart 包)
-
Effective Dart dart.dev/guides/lang…
-
pedantic pub.dev/packages/pe…
值得一提
手动检查每个包的版本可能有点烦人。对于 Android Studio 用户,你可以查看这个插件 Flutter Pub Version Checker ー For IntelliJ IDEA,Android Studio 为你提供。突出显示带有新版本的软件包非常方便。
plugins.jetbrains.com/plugin/1240…
待续
这是一个关于我们公司内部使用的库和方法的快速总结。如果你正在寻找一些开始点,它也应该有助于你的项目,但作为 Flutter 已经演变,我们有许多可行的解决方案,共同的问题,这只是其中之一。在下一篇文章中,我将展示体系结构图,解释特定的层,并实现一个列表屏幕(从远程、本地持久化获取)。
© 猫哥
ducafecat.tech/
github.com/ducafecat
往期
开源
GetX Quick Start
github.com/ducafecat/g…
新闻客户端
github.com/ducafecat/f…
strapi 手册译文
getstrapi.cn
微信讨论群 ducafecat
系列集合
译文
ducafecat.tech/categories/…
开源
ducafecat.tech/categories/…
Dart 编程语言基础
space.bilibili.com/404904528/c…
Flutter 零基础入门
space.bilibili.com/404904528/c…
Flutter 实战从零开始 新闻客户端
space.bilibili.com/404904528/c…
Flutter 组件开发
space.bilibili.com/404904528/c…
Flutter Bloc
space.bilibili.com/404904528/c…
Flutter Getx4
space.bilibili.com/404904528/c…
Docker Yapi
space.bilibili.com/404904528/c…
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!