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

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

hive_module 简介

hive_module 是一个为 hive 包提供的封装模块,它为 Juneflow 项目提供了简单易用的方式来进行本地数据存储。

pub package

Module Hub
View Hub

Discord 加入服务器
KakaoTalk 加入房间


安装

步骤 1: 创建 Juneflow 项目(如果尚未存在)

如果您的 Juneflow 项目尚不存在,请按照 此指南 进行创建。

步骤 2: 在项目根目录运行命令

打开终端并导航到 Juneflow 项目的根目录,然后输入以下命令以添加 hive_module

june add hive_module

使用示例

以下是一个简单的示例,展示如何使用 hive_module 来存储和读取本地数据。

1. 初始化存储

main() 函数中初始化 Hive 模块:

import 'package:juneflow/juneflow.dart';
import 'package:hive_module/hive_module.dart';

void main() {
  // 初始化 Juneflow 和 Hive 模块
  runApp(JuneApp(
    modules: [
      HiveModule(), // 添加 Hive 模块
    ],
    child: MyApp(),
  ));
}

2. 存储数据

使用 Hive.box() 方法来存储键值对。例如,将整数值存储到 Hive 中:

void saveData() {
  // 将键值对存储到 Hive 中
  Hive.box().put('key', 123);
}

3. 读取数据

从 Hive 中获取之前存储的数据,并打印结果:

void readData() {
  // 从 Hive 中读取数据
  int value = Hive.box().get('key');

  // 打印读取到的值
  print(value); // 输出: 123
}

完整示例代码

import 'package:juneflow/juneflow.dart';
import 'package:hive_module/hive_module.dart';

void main() {
  // 初始化 Juneflow 和 Hive 模块
  runApp(JuneApp(
    modules: [
      HiveModule(), // 添加 Hive 模块
    ],
    child: MyApp(),
  ));
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Hive Module 示例')),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () => saveData(),
                child: Text('保存数据'),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () => readData(),
                child: Text('读取数据'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void saveData() {
    // 将键值对存储到 Hive 中
    Hive.box().put('key', 123);
    print('数据已保存');
  }

  void readData() {
    // 从 Hive 中读取数据
    int value = Hive.box().get('key');

    // 打印读取到的值
    print(value); // 输出: 123
  }
}

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

1 回复

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


hive 是一个轻量级且快速的键值存储库,适用于 Flutter 和 Dart 应用程序。它比传统的 SharedPreferences 更高效,并且支持复杂的数据类型。hive 的使用非常灵活,适合存储本地数据。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  hive: ^2.0.0
  hive_flutter: ^1.0.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());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hive Demo',
      home: HomePage(),
    );
  }
}

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

现在你可以在应用程序中使用 Hive 来存储和读取数据。

存储数据

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

class HomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    var box = Hive.box('myBox');

    return Scaffold(
      appBar: AppBar(
        title: Text('Hive Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: () {
                box.put('name', 'John Doe');
                box.put('age', 30);
                box.put('isStudent', false);
              },
              child: Text('Save Data'),
            ),
            ElevatedButton(
              onPressed: () {
                var name = box.get('name');
                var age = box.get('age');
                var isStudent = box.get('isStudent');

                print('Name: $name');
                print('Age: $age');
                print('Is Student: $isStudent');
              },
              child: Text('Read Data'),
            ),
          ],
        ),
      ),
    );
  }
}

读取数据

var name = box.get('name');
var age = box.get('age');
var isStudent = box.get('isStudent');

print('Name: $name');
print('Age: $age');
print('Is Student: $isStudent');

4. 使用 Hive 存储自定义对象

Hive 还支持存储自定义对象。首先,你需要为自定义对象生成适配器。

定义自定义对象

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 pub run build_runner build

注册适配器

main.dart 中注册适配器:

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

存储和读取自定义对象

var person = Person(name: 'Jane Doe', age: 25);
box.put('person', person);

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

5. 关闭盒子

在应用程序退出时,最好关闭所有打开的盒子:

[@override](/user/override)
void dispose() {
  Hive.close();
  super.dispose();
}
回到顶部