Flutter本地数据存储插件hive_repo的使用

Flutter本地数据存储插件hive_repo的使用

Repository 功能基于 hive 实现。

使用方法

只需要将一个盒子传递给构造函数并使用 RepositoryLazyRepository 方法即可。

import 'package:hive_repo/hive_repo.dart';

main() {
  Hive.init(Directory.systemTemp.path + '/test');
  Hive.registerAdapter(UserAdapter());

  final repository = Repository<User>(Hive.box<User>('test_user_box'));

  final List<User> users = await repository.list();
}

完整示例代码

下面是一个完整的示例代码,展示了如何使用 hive_repo 插件来管理本地数据存储。

import 'dart:io';

import 'package:hive/hive.dart';
import 'package:hive_repo/hive_repo.dart';

void main() async {
  // 初始化Hive
  Hive.init(Directory.systemTemp.path + '/test');
  
  // 注册适配器
  Hive.registerAdapter(UserAdapter());

  // 创建Repository实例
  final repository = Repository<User>(Hive.box<User>('test_user_box'));

  // 获取用户列表
  final users = await repository.stream().toList();

  // 打印用户列表
  print(users);
  // 输出:[User1, User2, 等等...]
}

// 用户类
class User {
  final String name;

  User(this.name);
}

// 用户适配器
class UserAdapter extends TypeAdapter<User> {
  [@override](/user/override)
  final int typeId = 0;

  [@override](/user/override)
  User read(BinaryReader reader) {
    return User(reader.read());
  }

  [@override](/user/override)
  void write(BinaryWriter writer, User obj) {
    writer.write(obj.name);
  }
}

更多关于Flutter本地数据存储插件hive_repo的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter本地数据存储插件hive_repo的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


hive 是一个轻量级、快速且易于使用的 NoSQL 本地数据库,适用于 Flutter 应用。hive 提供了高效的数据存储和检索功能,适合存储简单的键值对或复杂的数据结构。

hive_repo 并不是一个官方的 Hive 插件,但你可以使用 hivehive_flutter 插件来实现本地数据存储。以下是如何在 Flutter 项目中使用 hive 进行本地数据存储的步骤。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 hivehive_flutter 依赖:

dependencies:
  flutter:
    sdk: flutter
  hive: ^2.0.4
  hive_flutter: ^1.1.0

然后运行 flutter pub get 来安装依赖。

2. 初始化 Hive

在使用 Hive 之前,你需要初始化它。通常在 main.dart 中进行初始化:

import 'package:flutter/material.dart';
import 'package:hive/hive.dart';
import 'package:hive_flutter/hive_flutter.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Hive.initFlutter();
  await Hive.openBox('myBox'); // 打开一个名为 'myBox' 的盒子
  runApp(MyApp());
}

3. 使用 Hive 存储和读取数据

Hive 使用 Box 来存储数据。你可以将数据存储在 Box 中,并通过键来检索数据。

存储数据

var box = Hive.box('myBox');
box.put('name', 'John Doe');
box.put('age', 30);

读取数据

var name = box.get('name'); // 获取键为 'name' 的值
var age = box.get('age');   // 获取键为 'age' 的值
print('Name: $name, Age: $age');

删除数据

box.delete('name'); // 删除键为 'name' 的数据

4. 存储复杂对象

如果你需要存储自定义对象,可以使用 Hive 提供的 TypeAdapter 来序列化和反序列化对象。

定义模型类

import 'package:hive/hive.dart';

part 'person.g.dart'; // 生成的适配器文件

@HiveType(typeId: 0)
class Person {
  @HiveField(0)
  String name;

  @HiveField(1)
  int age;

  Person({required this.name, required this.age});
}

生成适配器

在终端中运行以下命令来生成适配器:

flutter packages pub run build_runner build

注册适配器

main.dart 中注册适配器:

import 'package:hive/hive.dart';
import 'person.dart'; // 导入你的模型类

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Hive.initFlutter();
  Hive.registerAdapter(PersonAdapter()); // 注册适配器
  await Hive.openBox('myBox');
  runApp(MyApp());
}

存储和读取自定义对象

var box = Hive.box('myBox');
var person = Person(name: 'John Doe', age: 30);
box.put('person', person);

var retrievedPerson = box.get('person') as Person;
print('Name: ${retrievedPerson.name}, Age: ${retrievedPerson.age}');

5. 关闭 Hive

在应用关闭时,最好关闭所有打开的 Box

void dispose() {
  Hive.close();
}
回到顶部