Flutter轻量级数据库管理插件hive_simple的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter轻量级数据库管理插件hive_simple的使用

简介

hive_simple 是一个基于Hive的Flutter插件,旨在简化数据存储和管理。它提供了一组自定义函数来添加、更新和删除数据,使得与Hive数据库的交互变得更加简单。该插件消除了为每个表添加单独适配器的需求,提供了一种更灵活和高效的方式来管理Flutter项目中的数据。

特性

  • 轻松存储数据:通过调用 await DbMain.instance.hiveAddItem(tableName, data) 来存储数据。
  • 轻松获取数据:通过调用 await DbMain.instance.hiveGetItemList(tableName) 来获取数据。
  • 支持FlutterFlow:FlutterFlow用户可以直接从FlutterFlow常量中创建表。
  • 平台支持
    • Android: SDK 21+
    • iOS: 10.0+

快速开始

要使用 hive_simple 插件,只需在 pubspec.yaml 文件中添加以下依赖项并运行 dart pub get

dependencies:
  hive_simple: ^1.0.1

使用示例

下面是一个完整的示例代码,展示了如何在Flutter项目中使用 hive_simple 插件来初始化数据库、创建表、添加和获取数据。

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

void main() async {
  // 确保Flutter绑定已初始化
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化Hive数据库
  await DbMain.instance.dbInit();

  // 创建表(必须在使用之前创建)
  await DbMain.instance.createNewTable(["users", "products"]);

  // 运行应用
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hive Simple Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Hive Simple Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  // 用于存储输入的文本
  String textStringValue = "";

  // 用于存储从数据库中获取的数据
  List<dynamic> searchedData = [];

  // 标记是否正在搜索
  bool isSearching = false;

  // 添加数据到数据库
  Future<void> addItemToDatabase() async {
    if (textStringValue.isNotEmpty) {
      // 将数据添加到 "users" 表中
      await DbMain.instance.hiveAddItem(
        "users",
        {"name": textStringValue},
      );

      // 清空输入框
      setState(() {
        textStringValue = "";
      });

      // 重新获取数据
      await fetchItemsFromDatabase();
    }
  }

  // 从数据库中获取数据
  Future<void> fetchItemsFromDatabase() async {
    // 从 "users" 表中获取所有数据
    List<dynamic> data = await DbMain.instance.hiveGetItemList("users");

    // 更新状态
    setState(() {
      searchedData = data;
    });
  }

  [@override](/user/override)
  void initState() {
    super.initState();
    // 在页面加载时获取数据
    fetchItemsFromDatabase();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.white,
        iconTheme: const IconThemeData(color: Colors.black),
        title: Text(widget.title, style: const TextStyle(color: Colors.black)),
        centerTitle: true,
        elevation: 2.5,
        actions: [
          InkWell(
            onTap: () {
              // 模拟点击事件
              print("List icon tapped");
            },
            child: Container(
              margin: const EdgeInsets.only(right: 10),
              child: const Icon(Icons.list_alt),
            ),
          ),
        ],
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            // 输入框
            TextField(
              onChanged: (value) {
                setState(() {
                  textStringValue = value;
                });
              },
              decoration: const InputDecoration(
                labelText: "Enter user name",
                border: OutlineInputBorder(),
              ),
            ),
            const SizedBox(height: 20),

            // 添加按钮
            ElevatedButton(
              onPressed: addItemToDatabase,
              child: const Text("Add User"),
            ),
            const SizedBox(height: 20),

            // 显示从数据库中获取的数据
            Expanded(
              child: ListView.builder(
                itemCount: searchedData.length,
                itemBuilder: (context, index) {
                  return ListTile(
                    title: Text(searchedData[index]["name"]),
                  );
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter轻量级数据库管理插件hive_simple的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter轻量级数据库管理插件hive_simple的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用hive_simple插件进行轻量级数据库管理的代码示例。hive_simple是对Hive的一个简化封装,使得Hive的使用更加直观和方便。Hive本身是一个快速、轻量级的键值存储解决方案,非常适合在Flutter中使用。

首先,确保你的pubspec.yaml文件中已经添加了hivehive_flutter依赖(hive_simple实际上并不是Hive官方的一个包,但我们可以展示如何使用Hive来模拟简化操作的概念)。如果hive_simple是一个第三方包,你需要找到它的正确名称并添加。

dependencies:
  flutter:
    sdk: flutter
  hive: ^2.0.4  # 确保版本是最新的
  hive_flutter: ^1.1.0  # Flutter特定的Hive支持

然后运行flutter pub get来获取依赖。

接下来,我们需要初始化Hive并设置一个类型适配器(Type Adapter),因为Hive需要知道如何存储和检索我们的自定义对象。这里假设我们有一个简单的User类。

import 'package:hive/hive.dart';

part 'user.g.dart';

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

  @HiveField(1)
  final int age;

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

然后运行flutter pub run build_runner build来生成user.g.dart文件,这个文件包含了Hive需要的代码来序列化和反序列化User对象。

现在我们可以初始化Hive并打开一个box来存储User对象:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化Hive
  await Hive.initFlutter();

  // 打开一个box,如果box不存在则创建它
  var box = await Hive.openBox<User>('users');

  // 添加一些用户
  await box.put('user1', User(name: 'Alice', age: 30));
  await box.put('user2', User(name: 'Bob', age: 25));

  // 读取用户
  var user1 = box.get('user1');
  var user2 = box.get('user2');

  print('User 1: ${user1?.name}, ${user1?.age}');
  print('User 2: ${user2?.name}, ${user2?.age}');

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Hive Example'),
        ),
        body: Center(
          child: Text('Check the console for printed user data'),
        ),
      ),
    );
  }
}

在这个例子中,我们:

  1. 初始化了Hive。
  2. 打开了一个名为users的box,用于存储User对象。
  3. 添加了两个User对象到box中。
  4. 从box中读取并打印了这两个User对象。

请注意,这个示例模拟了如何使用Hive进行轻量级数据库管理,而hive_simple如果是一个存在的包,可能会有自己特定的API和用法。如果hive_simple确实存在,请参考其官方文档以获取更详细的使用说明和特定API。如果hive_simple不存在,上述代码展示了如何使用Hive本身进行简化操作。

回到顶部