Flutter常用库/插件

972 阅读5分钟

Flutter常用库/插件汇总

19年开始接触的 flutter ,而且是客户提出来的用 flutter ,不得不佩服这个客户还是蛮敢于尝试新技术的。

项目中用了一堆库,自己也调查学习了不少库。所以想整一篇汇总的文章,把常用好用的库都整理一下。对于面向CV编程多少会方便些。

常用好用为个人主观观点

基本

状态管理

  • 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 插件

二维码扫描

  • barcode_scan2

    用于扫描 2D 条形码和二维码的 Flutter 插件。

地理位置

  • geolocator

    Flutter 的地理位置插件,提供了对各平台特定的地理位置服务的简易访问途径。


个人开了一个[译]Flutter&Dart库专栏,有兴趣的可参考。


我正在参与掘金技术社区创作者签约计划招募活动,点击链接报名投稿