centos里flutter数据存储方式有哪些
导读:CentOS 上可用的 Flutter 本地数据存储方式 在 Linux(CentOS) 桌面或嵌入式环境中,Flutter 的本地持久化能力与平台无关,常用方案如下(含简要适用场景与要点): 方式 适用场景 关键要点 Sha...
CentOS 上可用的 Flutter 本地数据存储方式
在 Linux(CentOS) 桌面或嵌入式环境中,Flutter 的本地持久化能力与平台无关,常用方案如下(含简要适用场景与要点):
| 方式 | 适用场景 | 关键要点 |
|---|---|---|
| SharedPreferences | 少量配置、开关、令牌等 | 键值对,仅支持基本类型;不适合大数据或复杂查询 |
| 文件存储(File + path_provider) | 日志、缓存、导出/导入、离线内容 | 灵活,支持大文件;需自行管理读写与目录 |
| SQLite(sqflite) | 结构化数据、需要查询/事务 | 关系型数据库;支持索引、事务、迁移 |
| Hive | 高性能键值/对象存储 | 纯 Dart、速度快;需注册适配器,适合本地模型 |
| IndexedDB(flutter_indexed_db) | Web 运行时或需要浏览器 IndexedDB | 浏览器 API 的 Dart 封装;非桌面原生路径 |
| 云存储(Firebase/Firestore 等) | 多端同步、实时协作 | 非本地存储;需网络与配置 |
快速上手示例
-
SharedPreferences
- 依赖:shared_preferences
- 示例:
- 保存:final prefs = await SharedPreferences.getInstance(); await prefs.setString(‘token’, ‘abc’);
- 读取:final token = prefs.getString(‘token’);
- 说明:适合少量、简单键值,跨会话持久。
-
文件存储(File + path_provider)
- 依赖:path_provider、dart:io
- 示例:
- 路径:final dir = await getApplicationDocumentsDirectory();
- 写入:await File(‘${ dir.path} /notes.txt’).writeAsString(‘Hello’);
- 读取:String txt = await File(‘${ dir.path} /notes.txt’).readAsString();
- 说明:适合文本/二进制大文件与自定义格式。
-
SQLite(sqflite)
- 依赖:sqflite、path_provider、path
- 示例:
- 打开库:final dbPath = join(await getDatabasesPath(), ‘app.db’);
- 建表:await db.execute(‘CREATE TABLE IF NOT EXISTS items(id INTEGER PRIMARY KEY, name TEXT)’);
- 写入:await db.insert(‘items’, { ‘name’: ‘Book’} );
- 查询:List rows = await db.query(‘items’);
- 说明:适合结构化数据与复杂查询、事务。
-
Hive
- 依赖:hive、hive_flutter
- 示例:
- 初始化:await Hive.initFlutter(); await Hive.openBox(‘settings’);
- 写入:Hive.box(‘settings’).put(‘theme’, ‘dark’);
- 读取:var theme = Hive.box(‘settings’).get(‘theme’);
- 说明:纯 Dart、高性能键值/对象存储;模型需 TypeAdapter。
在 CentOS 上的实践建议
- 选择路径与权限:桌面应用优先使用 getApplicationDocumentsDirectory 等应用私有目录,避免随意写入系统目录;必要时在应用启动前确保目录可写。
- 平台差异:如用到 getExternalStorageDirectory,在 Linux/CentOS 上通常不可用或行为不同,建议改用应用文档目录或配置自定义数据目录。
- 数据体积与结构:小量配置用 SharedPreferences;结构化且需查询用 SQLite;大文件/自定义格式用 文件;追求本地高性能对象存储用 Hive。
- 备份与迁移:结构化数据建议设计版本迁移;重要数据定期备份(如导出为 JSON/CSV 到用户指定目录)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos里flutter数据存储方式有哪些
本文地址: https://pptw.com/jishu/785099.html
