Flutter 文件存储详解

发布时间:2026/5/30 20:56:00

Flutter 文件存储详解 Flutter 文件存储详解一、文件存储概述Flutter 文件存储用于持久化数据到本地文件系统。常见的存储方式包括 SharedPreferences、Hive、SQFlite 和直接文件操作。1.1 存储类型键值存储- SharedPreferences、Hive关系型数据库- SQFlite文件存储- 直接读写文件二、SharedPreferences2.1 安装依赖dependencies: shared_preferences: ^2.2.02.2 使用示例import package:shared_preferences/shared_preferences.dart; class StorageService { static late SharedPreferences _prefs; static Futurevoid init() async { _prefs await SharedPreferences.getInstance(); } static String? getString(String key) { return _prefs.getString(key); } static Futurebool setString(String key, String value) { return _prefs.setString(key, value); } static int? getInt(String key) { return _prefs.getInt(key); } static Futurebool setInt(String key, int value) { return _prefs.setInt(key, value); } }三、Hive3.1 安装依赖dependencies: hive: ^2.2.3 hive_flutter: ^1.1.0 dev_dependencies: hive_generator: ^1.1.5 build_runner: ^2.4.43.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 build3.4 使用示例class HiveService { static late BoxUser _userBox; static Futurevoid init() async { await Hive.initFlutter(); Hive.registerAdapter(UserAdapter()); _userBox await Hive.openBoxUser(users); } static void addUser(User user) { _userBox.add(user); } static ListUser getUsers() { return _userBox.values.toList(); } }四、SQFlite4.1 安装依赖dependencies: sqflite: ^2.3.0 path: ^1.8.34.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; FutureDatabase get database async { if (_database ! null) return _database!; _database await _initDatabase(); return _database!; } FutureDatabase _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; FutureString readFile(String path) async { final file File(path); return await file.readAsString(); }5.2 写入文件Futurevoid writeFile(String path, String content) async { final file File(path); await file.writeAsString(content); }5.3 获取应用目录import package:path_provider/path_provider.dart; FutureString getApplicationDocumentsDirectory() async { final directory await getApplicationDocumentsDirectory(); return directory.path; }六、实战案例6.1 完整存储服务class StorageService { static Futurevoid saveUser(User user) async { // 使用 SharedPreferences 存储简单数据 final prefs await SharedPreferences.getInstance(); await prefs.setString(user_name, user.name); // 使用 Hive 存储对象 final box await Hive.openBoxUser(users); await box.add(user); } }七、总结文件存储方案选择简单数据- SharedPreferences复杂对象- Hive关系型数据- SQFlite文件- 直接文件操作根据需求选择合适的存储方式。

相关新闻