引言
因为开发 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 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 支持全局配置、拦截器、请求取消、上传/下载文件、超时等 |
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 启动图标的库 |
6. 系统工具与权限 (Utilities)
提供权限状态检查、唯一 ID 生成及日期/语言格式化服务。
| 库名称 | 支持平台 | 作用 | |||||
|---|---|---|---|---|---|---|---|
| Windows | Linux | MacOS | Android | iOS | Web | ||
| permission_handler | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | 一个用于提供跨平台权限状态检查的库 |
| uuid | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 一个用于简单快速生成RFC4122和RFC9562 UUID的库 |
| intl | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 提供国际化和本地化服务, 包括信息翻译、复数和性别、日期/数字格式 以及解析和双向文本 |
结束语
- 我对于 Flutter 是相见恨晚的感觉,最开始对于多端开发只听说过最成熟的 Electron ,但是 Electron 的开发理念我自己也不是很喜欢,把整个 Chrome 内核塞了进去。
- 后面了解到了 Tauri ,这个的开发理念我很喜欢,最强的性能加上最强的前端可拓展性。于是我学过了一小会,后面觉得兼容性又让我有点缺步,但我依旧看到它的发展,希望后续可以与 Flutter 掰掰手腕。
- 再到后面,我无意间看到了 Flutter 这个框架,一了解下,这就是我一直想要的那种多端开发的最终解:接近原生的性能,拥有不错的跨端能力,社区支持还算比较强大与活跃,并且拥有这么多成熟的公司用 Flutter 起步开发或把 Flutter 融入他们的大产品中,让我有信心学习这款框架作为谋生的手段。
- 另:本人 css 不是很过关,加上没有什么平面设计的水平,所以前端三剑客的页面我写的不太好。所以我不太想选择 Electron 和 Tauri 而选择 Flutter 的原因一个是这个。但现在有 AI 的加持,也不太成问题。