Hive数据库

Posted by アライさん on 2020年11月05日

引入

1
2
3
4
5
6
7
8
9
10
11
12
13
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
# hive数据库
hive: ^1.4.4+1
# hive数据库
hive_flutter: ^0.3.1

dev_dependencies:
hive_generator: ^0.8.2
build_runner: ^1.10.4

自动构建:flutter packages pub run build_runner build

主键:

1
2
///key为数据库主键
box.put(key,value);

注意:

1
2
//打开box时指定了<UserInfoModel>,以后每次使用box都需要指定类型
await Hive.openBox<UserInfoModel>(Constants.UserInfoBox);

修改数据,会自动触发监听:

1
2
3
var model = Hive.box<UserInfoModel>(Constants.UserInfoBox).get(Constants.UserInfoBox);
model.account = '我修改了头像';
model.save();

一、监听改变

1
2
3
4
Future<void> _initUserInfo() async {
await Hive.initFlutter();
await Hive.openBox(Constants.userInfoBoxName);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@override
void initState() {
super.initState();
_initUserInfo();
}

@override
Widget build(BuildContext context) {
return ValueListenableBuilder(
valueListenable: Hive.box(Constants.userInfoBoxName).listenable(),
builder: (context, box, widget) {
var login = box.get('isLogin', defaultValue: false);
return Scaffold(

);
},
);
}