离线Flutter桌面应用本地数据库选型及运行相关问题咨询
Flutter桌面端开发相关问题解答
本地数据库选型参考
你提到的SQLite完全支持Flutter全桌面平台,完全匹配你「无需用户额外装依赖、本地离线存储、打包后直接运行」的需求,不需要考虑MySQL这类需要独立部署服务的数据库。实际开发中常用的符合要求的方案如下:
- 最稳妥的通用方案选
sqflite_common_ffi:这是Flutter生态成熟度最高的SQLite桌面适配方案,和移动端常用的sqfliteAPI完全一致,底层通过Dart FFI直接调用SQLite原生C库,打包时会把对应平台的SQLite依赖直接打进产物里,用户侧无任何额外安装步骤,小体量练习项目用这个上手最快。 - 如果想减少手写SQL的工作量,可以选
drift:这是基于SQLite封装的ORM框架,全桌面平台兼容,自带类型安全、响应式查询、SQL自动生成能力,开发效率更高,底层同样依赖嵌入式SQLite,不会引入额外运行服务。 - 如果只有简单键值对、低复杂度结构化数据存储需求,可以选
hive或者isar:这类是纯Dart实现的嵌入式NoSQL数据库,没有额外原生依赖,打包体积更小,存取性能也足够,不过涉及多表关联查询的场景还是优先选SQLite方案。
注意不要选MySQL、PostgreSQL这类C/S架构的数据库,这类要么要求用户本地手动安装数据库服务,要么需要你自行打包服务进程、处理进程拉起/端口占用等逻辑,对于简易练习项目来说完全是额外负担。
Flutter桌面应用运行环境要求
最终打包的Release版应用完全不需要用户预装Flutter环境。
通过flutter build windows(macOS对应flutter build macos、Linux对应flutter build linux)命令编译出的Release产物,是和C#、C++开发的程序一样的原生二进制文件,输出目录里已经包含了Flutter引擎、三方插件原生依赖、你选用的嵌入式数据库等所有运行需要的文件,用户拿到后直接双击exe就能运行,不需要提前安装Flutter SDK、Dart环境或者其他运行时。如果需要分发成单安装包或者单文件绿色版,用常规的桌面安装包打包工具(比如Inno Setup)处理编译产物即可,使用体验和普通桌面软件没有区别。
开发踩坑提示:选第三方插件时优先确认pub页标注的平台支持范围,不要用仅支持移动端的插件;用SQLite的时候不要选仅适配移动端的老版
sqflite包,要选带ffi后缀的通用适配版本,否则桌面端会报找不到实现的错误。
内容的提问来源于stack exchange,提问作者aoiTenshi
相关产品推荐
相关产品推荐

