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

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

在Flutter应用开发中,本地数据存储是一个常见的需求。my_simple_hive 是一个轻量级的Flutter插件,基于Hive数据库,用于快速实现本地数据存储。本文将通过完整的示例代码展示如何使用 my_simple_hive 插件进行数据存储和读取。


安装依赖

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

dependencies:
  my_simple_hive: ^1.0.0 # 确保版本号是最新的

然后运行以下命令以更新依赖:

flutter pub get

初始化 Hive 数据库

在使用 my_simple_hive 插件之前,需要初始化 Hive 数据库。通常可以在 main() 函数中完成初始化。

import 'package:flutter/material.dart';
import 'package:my_simple_hive/my_simple_hive.dart';

void main() async {
  // 初始化 Hive 数据库
  await MySimpleHive.init();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

定义数据模型

为了方便存储和读取数据,可以定义一个简单的数据模型类,并使用 @HiveType 注解来标记该类。

import 'package:hive/hive.dart';

part 'person.g.dart'; // 自动生成的文件名

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

  @HiveField(1)
  int age;

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

生成 person.g.dart 文件的命令:

flutter packages pub run build_runner build

保存数据到 Hive 数据库

接下来,我们将创建并保存一个 Person 对象到 Hive 数据库中。

import 'package:flutter/material.dart';
import 'package:my_simple_hive/my_simple_hive.dart';
import 'person.dart'; // 导入我们定义的数据模型

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  late Box<Person> personBox; // 定义一个 Hive 数据库盒子

  @override
  void initState() {
    super.initState();
    // 打开或创建名为 "persons" 的 Hive 数据库盒子
    personBox = MySimpleHive.openBox<Person>('persons');
  }

  void savePerson() {
    // 创建一个新的 Person 实例
    final person = Person(name: "Alice", age: 25);

    // 将 Person 对象保存到 Hive 数据库中
    personBox.put("alice", person);

    print("Person saved successfully!");
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("my_simple_hive 示例"),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: savePerson,
          child: Text("保存数据到 Hive"),
        ),
      ),
    );
  }
}

从 Hive 数据库读取数据

现在,我们将从 Hive 数据库中读取之前保存的 Person 对象。

void loadPerson() {
  // 从 Hive 数据库中读取名为 "alice" 的 Person 对象
  final person = personBox.get("alice");

  if (person != null) {
    print("Name: ${person.name}, Age: ${person.age}");
  } else {
    print("Person not found in the database.");
  }
}

在按钮点击事件中调用 loadPerson() 方法:

ElevatedButton(
  onPressed: loadPerson,
  child: Text("从 Hive 读取数据"),
),

完整示例代码

以下是完整的代码示例,包含初始化、保存和读取功能:

import 'package:flutter/material.dart';
import 'package:my_simple_hive/my_simple_hive.dart';
import 'person.dart'; // 导入我们定义的数据模型

void main() async {
  // 初始化 Hive 数据库
  await MySimpleHive.init();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  late Box<Person> personBox; // 定义一个 Hive 数据库盒子

  @override
  void initState() {
    super.initState();
    // 打开或创建名为 "persons" 的 Hive 数据库盒子
    personBox = MySimpleHive.openBox<Person>('persons');
  }

  void savePerson() {
    // 创建一个新的 Person 实例
    final person = Person(name: "Alice", age: 25);

    // 将 Person 对象保存到 Hive 数据库中
    personBox.put("alice", person);

    print("Person saved successfully!");
  }

  void loadPerson() {
    // 从 Hive 数据库中读取名为 "alice" 的 Person 对象
    final person = personBox.get("alice");

    if (person != null) {
      print("Name: ${person.name}, Age: ${person.age}");
    } else {
      print("Person not found in the database.");
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("my_simple_hive 示例"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
          ElevatedButton(
            onPressed: savePerson,
            child: Text("保存数据到 Hive"),
          ),
          SizedBox(height: 20),
          ElevatedButton(
            onPressed: loadPerson,
            child: Text("从 Hive 读取数据"),
          ),
        ]),
      ),
    );
  }
}

运行效果

  1. 点击“保存数据到 Hive”按钮后,会在终端打印:

    Person saved successfully!
    
  2. 点击“从 Hive 读取数据”按钮后,会在终端打印:

    Name: Alice, Age: 25
    

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

1 回复

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


my_simple_hive 是一个简化版的 Hive 插件,用于在 Flutter 应用中进行本地数据存储。Hive 是一个轻量级、快速且易于使用的 NoSQL 数据库,适用于存储键值对数据。my_simple_hive 插件进一步简化了 Hive 的使用,使得开发者可以更轻松地进行数据存储和检索。

安装 my_simple_hive

首先,你需要在 pubspec.yaml 文件中添加 my_simple_hive 依赖:

dependencies:
  flutter:
    sdk: flutter
  my_simple_hive: ^1.0.0  # 请使用最新版本

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

初始化 Hive

在使用 my_simple_hive 之前,你需要初始化 Hive。通常,你可以在 main.dart 文件中进行初始化:

import 'package:flutter/material.dart';
import 'package:my_simple_hive/my_simple_hive.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await MySimpleHive.init();  // 初始化 Hive
  runApp(MyApp());
}

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

使用 my_simple_hive 进行数据存储和检索

my_simple_hive 提供了简单的方法来存储和检索数据。以下是一些基本的使用示例:

存储数据

import 'package:flutter/material.dart';
import 'package:my_simple_hive/my_simple_hive.dart';

class HomeScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('My Simple Hive Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            await MySimpleHive.put('key1', 'Hello, Hive!');  // 存储数据
            print('Data saved');
          },
          child: Text('Save Data'),
        ),
      ),
    );
  }
}

检索数据

import 'package:flutter/material.dart';
import 'package:my_simple_hive/my_simple_hive.dart';

class HomeScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('My Simple Hive Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            String? value = await MySimpleHive.get('key1');  // 检索数据
            print('Retrieved data: $value');
          },
          child: Text('Retrieve Data'),
        ),
      ),
    );
  }
}

删除数据

import 'package:flutter/material.dart';
import 'package:my_simple_hive/my_simple_hive.dart';

class HomeScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('My Simple Hive Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            await MySimpleHive.delete('key1');  // 删除数据
            print('Data deleted');
          },
          child: Text('Delete Data'),
        ),
      ),
    );
  }
}
回到顶部