当前位置: 首页 > news >正文

Flutter 文件存储详解

Flutter 文件存储详解

一、文件存储概述

Flutter 文件存储用于持久化数据到本地文件系统。常见的存储方式包括 SharedPreferences、Hive、SQFlite 和直接文件操作。

1.1 存储类型

  • 键值存储- SharedPreferences、Hive
  • 关系型数据库- SQFlite
  • 文件存储- 直接读写文件

二、SharedPreferences

2.1 安装依赖

dependencies: shared_preferences: ^2.2.0

2.2 使用示例

import 'package:shared_preferences/shared_preferences.dart'; class StorageService { static late SharedPreferences _prefs; static Future<void> init() async { _prefs = await SharedPreferences.getInstance(); } static String? getString(String key) { return _prefs.getString(key); } static Future<bool> setString(String key, String value) { return _prefs.setString(key, value); } static int? getInt(String key) { return _prefs.getInt(key); } static Future<bool> setInt(String key, int value) { return _prefs.setInt(key, value); } }

三、Hive

3.1 安装依赖

dependencies: hive: ^2.2.3 hive_flutter: ^1.1.0 dev_dependencies: hive_generator: ^1.1.5 build_runner: ^2.4.4

3.2 创建模型

import 'package:hive/hive.dart'; part 'user.g.dart'; @HiveType(typeId: 0) class User extends HiveObject { @HiveField(0) late String name; @HiveField(1) late int age; User({required this.name, required this.age}); }

3.3 生成代码

flutter pub run build_runner build

3.4 使用示例

class HiveService { static late Box<User> _userBox; static Future<void> init() async { await Hive.initFlutter(); Hive.registerAdapter(UserAdapter()); _userBox = await Hive.openBox<User>('users'); } static void addUser(User user) { _userBox.add(user); } static List<User> getUsers() { return _userBox.values.toList(); } }

四、SQFlite

4.1 安装依赖

dependencies: sqflite: ^2.3.0 path: ^1.8.3

4.2 创建数据库

import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; class DatabaseHelper { static final DatabaseHelper _instance = DatabaseHelper._internal(); factory DatabaseHelper() => _instance; DatabaseHelper._internal(); static Database? _database; Future<Database> get database async { if (_database != null) return _database!; _database = await _initDatabase(); return _database!; } Future<Database> _initDatabase() async { final path = join(await getDatabasesPath(), 'my_database.db'); return await openDatabase( path, version: 1, onCreate: (db, version) async { await db.execute(''' CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL UNIQUE ) '''); }, ); } }

五、文件操作

5.1 读取文件

import 'dart:io'; Future<String> readFile(String path) async { final file = File(path); return await file.readAsString(); }

5.2 写入文件

Future<void> writeFile(String path, String content) async { final file = File(path); await file.writeAsString(content); }

5.3 获取应用目录

import 'package:path_provider/path_provider.dart'; Future<String> getApplicationDocumentsDirectory() async { final directory = await getApplicationDocumentsDirectory(); return directory.path; }

六、实战案例

6.1 完整存储服务

class StorageService { static Future<void> saveUser(User user) async { // 使用 SharedPreferences 存储简单数据 final prefs = await SharedPreferences.getInstance(); await prefs.setString('user_name', user.name); // 使用 Hive 存储对象 final box = await Hive.openBox<User>('users'); await box.add(user); } }

七、总结

文件存储方案选择:

  1. 简单数据- SharedPreferences
  2. 复杂对象- Hive
  3. 关系型数据- SQFlite
  4. 文件- 直接文件操作

根据需求选择合适的存储方式。

http://www.jsqmd.com/news/918610/

相关文章:

  • Qwen2.5-32B-Instruct安全部署指南:企业级应用的安全考虑与最佳实践
  • Arduino CAN通信库完全指南:如何在5分钟内构建工业级汽车电子项目
  • 上饶 GEO 优化哪家靠谱?别踩这 3 个坑,本土老板亲测避雷指南 - 资讯纵览
  • 漳州龙文区仕川之声汽车音响,亲测值得去 - 资讯纵览
  • Arduino智能交互宝箱:RFID序列解锁与多模块协同设计实战
  • Gemini调试错误排查实战:从curl原始请求验证→LangChain日志注入→Vertex AI Debugger深度追踪(附可复用Python诊断工具包)
  • 为什么选择LitCAD:免费开源二维CAD软件的5大核心优势
  • 2026 开发者必备 AI 资讯站点|一站式免费 Token 与大模型动态汇总平台
  • da-ner-base代码实现原理:从tokenizer到预测的完整流程
  • ACE-D1.1.1 ACE revisions
  • NAT映射回流解决内网通过公网映射访问内部服务器
  • 2026年汕头龙湖区黄金回收:CCIC认证与光谱仪检测标准解析 - 小仙贝贝
  • 江门蓬江韵声汽车音响老店亲测2026.5月推荐 - 资讯纵览
  • 3大核心技术突破:OpCore-Simplify如何重塑OpenCore EFI自动化配置体验
  • 智能GitHub加速方案:Fetch GitHub Hosts技术赋能效率革命
  • 2026年昆明奢侈品回收口碑排行榜,这几家最靠谱 - 资讯纵览
  • 无人机固件自由获取终极指南:5分钟掌握DankDroneDownloader完整使用方法
  • 基于ESP32的合规DIY无线控制器:从BLE通信到电源设计的完整方案
  • Qwen-Fixed-Chat-Templates部署最佳实践:生产环境配置建议
  • 网络安全学习笔记第二阶段之信息收集第二节
  • 操作系统-day04-做个IMG
  • 八大网盘直链下载终极指南:LinkSwift 浏览器插件完全教程
  • 2026年江苏苏州GEO搜索推广服务行业研究报告:探寻高性价比服务商 - 资讯纵览
  • 5分钟搭建个人文件服务器:chfsgui图形化工具完全指南
  • Whisky:在macOS上原生运行Windows应用的现代解决方案
  • UVA427 FlatLand Piano Movers 题解
  • wvp-GB28181-pro国标视频平台终极部署指南:3小时从零到实战
  • CSS 滚动条样式详解
  • 2026论文降AI率工具:11款工具实测谁配“靠谱”二字? - 降AI小能手
  • 批量采购家具生产厂家 - 资讯纵览