美文网首页Flutter
Flutter 数据库-Hive插件-存储基础类型

Flutter 数据库-Hive插件-存储基础类型

作者: YourSummer | 来源:发表于2023-03-15 17:56 被阅读0次

先决条件:

MacOS VSCode Flutter Dart
13.1 1.76.2 3.3.10 2.18.6
一. 我了解到的Flutter 基础数据持久化热门的有三种方案
  1. shared_preferences 个人感受: 都是异步操作,难封装
  2. get_storage个人感受: 好封装, 使用简单, 盒子概念, 只能存储基础类型
  3. hive 个人感受: 好封装, 盒子概念, 可以存储基本类型和自定义对象
二. 当我在搭建一个基本框架的时候, 这三个我都按顺序尝试了, 最终决定, 项目中存储方案只留一种那就是hive
三.下面介绍 hive 存储基础类型
  1. 安装插件

方式一: 编辑pubspec.yaml

dependencies:
  flutter:
    sdk: flutter

  hive: ^2.2.3 #数据持久化
  hive_flutter: ^1.1.0 # hive插件扩展

方式二: 不需要编辑pubspec.yaml文件, 使用终端命令依次安装:

flutter pub add hive
flutter pub add hive_flutter
  1. 初始化Hive
import 'package:hive_flutter/hive_flutter.dart';

// 给盒子起个名称
const basedataBox = 'basedataBox';

// 项目基础异步初始化
Future setup() async {
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化Hive
  await Hive.initFlutter();
  // 打开指定的盒子
  await Hive.openBox(basedataBox);
}

// Main函数调用setup()

// main函数 原本的样子:
void main() {
  runApp(const MyApp());
}

// 修改为如下样子
// 调用 await setup()
void main() async {
  await setup();
  runApp(const MyApp());
}
至此Hive初始化完成
四. 封装基础类型存储类
import 'package:hive/hive.dart';

class UserDefaults {
  static final UserDefaults shared = UserDefaults();
  // 声明盒子
  // 注意, main函数中这个盒子已经打开, 可以进行存储操作
  final _box = Hive.box(basedataBox);

  // 存储token
  String get token => _box.get('token');
  set token(String value) => _box.put('token', value);

  // 是否登录
  bool get isLogin => _box.get('isLogin');
  set isLogin(bool value) => _box.put('isLogin', value);

  // 用户安装App的时间
  DateTime get installTime => _box.get('installTime');
  set installTime(DateTime value) => _box.put('installTime', value);
}
核心思路: 充分使用settergetter方法,

如果需要添加新的属性,可以模仿token, 声明getter&setter方法.
如下第五条代码你就会发现如此写调用起来非常明朗

五. 封装使用:
// 获取token
var token = UserDefaults.shared.token;
// 存储token
UserDefaults.shared.token = 'new_token';

当然, 声明的属性也可以是Map

此篇如有补充, 或者有更好的方案, 请不吝赐教,
总之, 在我的项目中不允许使用多个数据持久化插件[强迫症脸]

下一篇介绍 Hive存储对象的注意事项

相关文章

网友评论

    本文标题:Flutter 数据库-Hive插件-存储基础类型

    本文链接:https://www.haomeiwen.com/subject/pbblrdtx.html