Flutter常用库/插件汇总
19年开始接触的 flutter ,而且是客户提出来的用 flutter ,不得不佩服这个客户还是蛮敢于尝试新技术的。
项目中用了一堆库,自己也调查学习了不少库。所以想整一篇汇总的文章,把常用好用的库都整理一下。对于面向CV编程多少会方便些。
常用好用为个人主观观点
基本
-
basic_utils
集合了很多常用工具函数。
-
uuid
用于简单快速生成 RFC4122 UUID 。
-
base32
简易的 base32 解码编码库。
-
equatable
在 Dart 中使比较对象可用经常会涉及到覆写 == 操作符和
hashCode。
使用Equatable,不需要手动编写 == 和hashCode,省去了编写样板代码的时间,这样就可以更多地聚焦于应用本身。 -
url_launcher
通过 url scheme 协议打开各种原生应用。
Flutter 插件url_launcher简介及使用,打开外部浏览器,拨打电话,发送短信,打开微信,支付宝,qq等_大前端之旅的博客-CSDN博客_url_launcher
状态管理
-
bloc/flutter_bloc
参与的项目使用的是 bloc 。bloc 是基于Stream的状态管理库。 它可以比较轻松地将展示层的代码与业务逻辑分开,从而使您的代码快速,易于测试且可重复使用。
官方文档有多国语言,英语无障碍的建议直接读英文版。
实际使用过程中需要定义一堆 state 类,event 类,需要写的模板代码比较多。
-
get
即 getX 。
试用过,网上评价大而全,充满魔法。
喜欢的可能很喜欢,不喜欢的可能很不喜欢。个人是觉着有些写法不习惯,像下面这样,在值后面加个
.obs来监听值的改变。var count = 0.obs; -
riverpod
看网上的评价,算是加强版的 provider ,说是弥补了 provider 的一些短板。
个人试用了一下,觉得比 bloc 简洁,比 get 清晰。
写个小应用啥的,用这个库感觉还不错。
有一点不知道算不算缺点,riverpod 中的 provider(riverpod中的概念,不是 provider 库) 属于全局定义,任何地方都可以调用任何 provider ,会不会有些混乱。
依赖注入/控制反转
-
kiwi
适用于 Dart 和 Flutter 的简单却高效的控制反转容器。该容器并不依赖反射,只是 Map,所以很快。
国际化
-
intl
比较古老的多语言国际化库,已经很长时间没有维护了。
-
slang
超好用的多语言国际化库。
pub 上还有很多其它的多语言库,还没一一尝试。
文件
-
path_provider
访问本地文件系统必备库。
-
image_picker
用过选择图像文件。
-
file_picker
用于选取文件。
-
open_file
调用平台的原生应用打开文件。
本地存储
-
shared_preferences
经典的键值库,获取实例为异步操作(await)。
-
hive
轻量超快键值数据库,无需异步操作(await),所有的处理同步即可完成,会在后台通过通知更新实现数据持久化。
-
drift
drift 原来的名字叫 moor ,改名的原因在官方文档[个人翻译]上有。
它是用于 Dart&Flutter 应用的响应式持久化库。底层使用 sqlite 或 sql.js 之类的数据库,并提供了一些独有的特性,如:
- 类型安全: 代替手动写 SQL 查询,解析查询返回的 List,drift 把 rows 转换成选用的对象。
- 流查询:drift 无需额外处理便可以监视你的查询。任何查询都可以转换为自动更新流,当基础数据发生改变时,该流会发出新的项目。(即基础数据发生改变,查询结果也会自动更新。)
- 流畅的查询:drift生成 dart 的 api,可以用来写查询,并自动获取结果。只用
select(users).watch()就可以保持所有用户的更新后的列表。无需写 SQL,无需解析 rows。 - 类型安全 SQL:drift 内置有SQL 解析器 和 分析器。它可以在编辑时解析你的查询,整理出要返回的数据列并生成表示 rows 的 dart 代码。
- 迁移工具:drift 提供了如
.createAllTables()的工具函数支持迁移处理。无需手动写CREATE TABLE语句,就能保持表的更新。
还有更多其它特性:
drift 会在插入数据前检验数据,所以能够收到有帮助的错误信息,而不只是SQL 错误码。
当然,它也支持事务,支持 DAO,还有高效的批量插入语句。 -
isar
超快的数据库。
支持特性:
- 高度可扩展
- 特性丰富 复合且多条目索引、查询修饰符、JSON 支持等。
- 异步 默认情况下,并行查询操作 和 多隔离支持。
- 开源 所有的都是永远开源和免费的!
逐步支持的特性:
- 全文检索 使检索快速且有趣
- 多平台 iOS 、Android 、桌面和完整的 WEB 支持!
- ACID 语义 依赖一致性
- 静态类型 编译时检查和自动完成的查询。
- 漂亮的文档 可读、易于理解并在不断改进
网络
-
http
基本的 HTTP 操作库。
-
dio
强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时、自定义适配器等...
强大的网络库,github 上有中文文档 。
邮件
-
flutter_mailer
通过设备的邮件客户端来共享邮件内容。
- 支持多附件。
Flutter 社区 Plus 插件
- Battery Plus:电池插件
- Connectivity Plus :网络连接状态插件
- Device Info Plus:设备信息插件
- Network Info Plus:网络信息插件
- Package Info Plus:软件包信息插件
- Sensors Plus:(加速计和陀螺仪)传感器插件
- Share Plus :Content共享插件
- Android Alarm Manager Plus:Android 闹钟管理器插件
- Android Intent Plus: Android Intent 插件
二维码扫描
-
barcode_scan2
用于扫描 2D 条形码和二维码的 Flutter 插件。
地理位置
-
geolocator
Flutter 的地理位置插件,提供了对各平台特定的地理位置服务的简易访问途径。
个人开了一个[译]Flutter&Dart库专栏,有兴趣的可参考。
我正在参与掘金技术社区创作者签约计划招募活动,点击链接报名投稿。