0%

整理一些学习flutter时用到的第三方库

引言

因为开发 Flutter 多端时引用已经做好的第三方库可以大大降低开发难度和提升开发速度,故需要作此整理。


一、 官方库与核心框架

由 Flutter 团队或 Dart 团队维护,是项目开发和静态分析的基础。

库名称 支持平台 作用
Windows Linux MacOS Android iOS Web
Flutter SDK ✅ ✅ ✅ ✅ ✅ ✅ Flutter 本身
flutter_lints ✅ ✅ ✅ ✅ ✅ ✅ 一个 Flutter 官方用于 Dart 语言静态分析检查的库

二、 社区常用库

1. 状态管理 (State Management)

负责跨组件的数据共享与 UI 自动刷新。

库名称 支持平台 作用
Windows Linux MacOS Android iOS Web
provider ✅ ✅ ✅ ✅ ✅ ✅ 官方推荐的状态管理库。通过观察者模式实现数据与 UI 的解耦,避免深层嵌套传参。

2. 本地存储 (Storage & Persistence)

处理数据库、轻量级键值对以及不同平台的 SQLite 适配。

库名称 支持平台 作用
Windows Linux MacOS Android iOS Web
sqflite ❌ ❌ ✅ ✅ ✅ ❌ 移动端专用,调用原生 SQLite 接口,非常稳定。仅支持异步操作
sqflite_common_ffi ✅ ✅ ✅ ✅ ✅ ✅ 基于 FFI 的实现,基于sqlite3的实现。多用于移动端与桌面端的同时开发使用
sqlite3 ✅ ✅ ✅ ✅ ✅ ✅ 作为 FFI 的底层依赖实现,可以单独的使用 Dart 进行 sqlite 的数据库操作
shared_preferences ✅ ✅ ✅ ✅ ✅ ✅ 一个用于数据持久化的库

3. 网络与通信 (Networking)

处理 API 请求、文件上传下载及拦截器配置。

库名称 支持平台 作用
Windows Linux MacOS Android iOS Web
Dio ✅ ✅ ✅ ✅ ✅ ✅ 支持全局配置、拦截器、请求取消、上传/下载文件、超时等
flutter_blue_plus 〇 ✅ ✅ ✅ ✅ ✅ 一个用于与系统的蓝牙部分进行交互的、属于BLE的蓝牙插件。官方版本并未对 Windows 做出支持,但有第三方插件做出支持
geolocator ✅ ✅ ✅ ✅ ✅ ✅ 一个用于与获取定位的 flutter 插件

4. 文件系统与路径处理 (Filesystem)

负责定位安全目录、处理路径字符串及用户文件选择。

库名称 支持平台 作用
Windows Linux MacOS Android iOS Web
path ✅ ✅ ✅ ✅ ✅ ✅ 一个全面的跨平台路径处理库,可以与 path_provider 进行合作处理
path_provider ✅ ✅ ✅ ✅ ✅ ❌ 一个用于对设备文件系统进行读写操作提供便捷使用的库,可以与 path 进行合作处理
file_picker ✅ ✅ ✅ ✅ ✅ ✅ 一个允许使用原生文件资源管理器选择单个或多个文件,扩展名支持过滤

5. UI 强化与视觉资源 (UI & Assets)

负责内容展示以及 App 品牌资源配置。

库名称 支持平台 作用
Windows Linux MacOS Android iOS Web
google_fonts ✅ ✅ ✅ ✅ ✅ ✅ 一个可以快速调用 Google Fonts 中的字体的库
flutter_spinkit ✅ ✅ ✅ ✅ ✅ ✅ 一个内置了一些有趣的加载动画的库
cupertino_icons ✅ ✅ ✅ ✅ ✅ ✅ 一个内置更偏向于 iOS 风格图标的库
flutter_launcher_icons ✅ ✅ ✅ ✅ ✅ ✅ 一个用于简单配置多端 App 启动图标的库
reorderable_tabbar ✅ ✅ ✅ ✅ ✅ ✅ 一个用于创建可拖拽的标签页的库
tabbed_view ✅ ✅ ✅ ✅ ✅ ✅ 一个用于创建可拖拽的标签页的库
sidebarx ✅ ✅ ✅ ✅ ✅ ✅ 一个美观的侧边栏库
graphic ✅ ✅ ✅ ✅ ✅ ✅ 一个强大的图表工具

6. 系统工具与权限 (Utilities)

提供权限状态检查、唯一 ID 生成及日期/语言格式化服务。

库名称 支持平台 作用
Windows Linux MacOS Android iOS Web
syncfusion_flutter_datagrid ✅ ✅ ✅ ✅ ✅ ✅ 提供高性能的、可高度自定义、可实时编辑的开箱即用的列表渲染组件。但商用需购买授权
two_dimensional_scrollables ✅ ✅ ✅ ✅ ✅ ✅ 由 Flutter 官方提供的提供高性能的、开箱即用的列表渲染组件。只有展示能力,且无法做到跨行合并
permission_handler ✅ ❌ ❌ ✅ ✅ ✅ 一个用于提供跨平台权限状态检查的库
uuid ✅ ✅ ✅ ✅ ✅ ✅ 一个用于简单快速生成RFC4122和RFC9562 UUID的库
intl ✅ ✅ ✅ ✅ ✅ ✅ 提供国际化和本地化服务, 包括信息翻译、复数和性别、日期/数字格式 以及解析和双向文本

7. 摄像头有关

需要运用到摄像头能力的库

库名称 支持平台 作用
Windows Linux MacOS Android iOS Web
barcode ✅ ✅ ✅ ✅ ✅ ✅ 这是一个简单的条形码、二维码生成库
simple_barcode_scanner ✅ ❌ ✅ ✅ ✅ ✅ 这是一个简单的条形码、二维码扫描库

7. 地理定位有关

需要运用到地理位置能力的库

库名称 支持平台 作用
Windows Linux MacOS Android iOS Web
easy_geofencing ✅ ✅ ✅ ✅ ✅ ✅ 这是一个简单的地理围栏的库
flutter_background_geolocation ❌ ❌ ❌ ✅ ✅ ❌ 这是一个专精于后台的地理围栏库
amap_flutter_location ✅ ✅ ✅ ✅ ✅ ✅ 高德推出的 Flutter 定位 SDK

7. 图片有关

拥有处理图片相关能力的库

库名称 支持平台 作用
Windows Linux MacOS Android iOS Web
extended_image ✅ ✅ ✅ ✅ ✅ ✅ 一个强大的官方图片扩展库,支持占位(加载)/失败状态、缓存网络、缩放平移图像、照片视图、滑出页面、编辑器(裁剪、旋转、翻转)、绘画自定义等。
wechat_assets_picker ❌ ❌ ✅ ✅ ✅ ❌ 这是一个模仿微信风格的图片选择器页面库
flutter_image_compress ✅ ✅ ✅ ✅ ✅ ✅ 这是一个本地的压缩图片的库(支持OpenHarmony)
waterfall_flow ✅ ✅ ✅ ✅ ✅ ✅ 一个快速构建瀑布流布局的 Flutter 组件库

结束语

  • 我对于 Flutter 是相见恨晚的感觉,最开始对于多端开发只听说过最成熟的 Electron ,但是 Electron 的开发理念我自己也不是很喜欢,把整个 Chrome 内核塞了进去。
  • 后面了解到了 Tauri ,这个的开发理念我很喜欢,最强的性能加上最强的前端可拓展性。于是我学过了一小会,后面觉得兼容性又让我有点缺步,但我依旧看到它的发展,希望后续可以与 Flutter 掰掰手腕。
  • 再到后面,我无意间看到了 Flutter 这个框架,一了解下,这就是我一直想要的那种多端开发的最终解:接近原生的性能,拥有不错的跨端能力,社区支持还算比较强大与活跃,并且拥有这么多成熟的公司用 Flutter 起步开发或把 Flutter 融入他们的大产品中,让我有信心学习这款框架作为谋生的手段。
  • 另:本人 css 不是很过关,加上没有什么平面设计的水平,所以前端三剑客的页面我写的不太好。所以我不太想选择 Electron 和 Tauri 而选择 Flutter 的原因一个是这个。但现在有 AI 的加持,也不太成问题。