在本地存储数据并在应用启动之间持续存在是任何移动应用开发过程中的基本概念之一。几乎每一个应用程序都需要你处理数据-游戏中的得分数量,或者一个简单的值来了解用户在最后一次访问时是否开启了黑暗模式。
Flutter提供了许多本地数据持久化选项供开发者选择。
Hive是一个轻量级和快速的键值数据库解决方案,它是跨平台的(在移动、桌面和网络上运行),并且是用纯Dart编写的。这使得它比不支持Flutter网络的sqflite更有优势--Hive没有原生的依赖性,所以它可以在网络上无缝运行。
依赖文件:
hive: ^2.2.3
hive_flutter: ^1.1.0
Future<void> main() async {
await Hive.initFlutter();
await Hive.openBox('box');
runApp(const MyApp());
}
class ToDoDataBase {
List list = [];
final Box box = Hive.box('mybox');
void init() {
if(box.get("TODOLIST") == null) {
create();
}else {
load();
}
}
void create() {
list = [
["hahah1", false],
["xixixi", true],
];
}
void load() {
list = box.get("TODOLIST");
}
void save() {
box.put("TODOLIST", list);
}
}
// 删除数据库
deleteTask(int index) {
setState(() {
db.list.removeAt(index);
});
db.save();
}
// 修改数据库
onTap(int index) {
setState(() {
db.list[index][1] = !db.list[index][1];
});
db.save();
}
修改原始对象
@HiveType(typeId: 0)
class TodoModel extends HiveObject {
@HiveField(0)
bool isComplete;
@HiveField(1)
String title;
TodoModel(this.isComplete, this.title);
@override
String toString() {
return 'todoModel{isComplete: $isComplete, title: $title}';
}
}
通过ChatGPT生成一个Adapter