如何用hive来修改类中的元素



早上好!我不知道如何访问我的boxHive元素而不重建它我希望能够在不改变现有信息的情况下更新一些信息

我是这样做的,我使用我的模型类的构造函数来添加注释,但它同时重建了我所有的类,我希望它只重建ListNote

class InformationPatient extends StatefulWidget {
final Patients patients;
final int index;
const InformationPatient(this.patients, this.index, {Key? key})
: super(key: key);
@override
State<InformationPatient> createState() => _InformationPatientState();
}
class _InformationPatientState extends State<InformationPatient> {
late Box<Patients> boxPatient;
@override
void initState() {
super.initState();
boxPatient = Hive.box('Patient');
}
void _addNote(String newtitle, String newnote, String newconclusion) {
final newNOTE = Patients(
listOfNotes: [
ListNote(title: newtitle, note: newnote, conclusion: newconclusion)
],
);
boxPatient.put(widget.index, newNOTE);
Navigator.of(context).pop();
}

这是我的类模型

import 'package:hive_flutter/hive_flutter.dart';
part 'listpatient.g.dart';
@HiveType(typeId: 0)
class Patients {
@HiveField(0)
final String? name;
@HiveField(1)
final String? firstname;
@HiveField(3)
final String? dateofbirth;
@HiveField(4)
final String? email;
@HiveField(5)
final String? phonenumber;
@HiveField(6)
final DateTime? date;
@HiveField(7)
final int? id;
@HiveField(8)
final List<ListNote>? listOfNotes;
const Patients({
this.name,
this.firstname,
this.dateofbirth,
this.email,
this.phonenumber,
this.date,
this.id,
this.listOfNotes,
});
}
@HiveType(typeId: 10)
class ListNote {
@HiveField(1)
final String? title;
@HiveField(2)
final String? note;
@HiveField(3)
final String? conclusion;
ListNote({
this.title,
this.note,
this.conclusion,
});
}

实际上Hive只提供Write和Read操作,正如您可以从其官方文档中看到的那样

因此,为了更新boxPatient盒中的对象,您需要这样获取它:

Patients patients = boxPatient.get(widget.index);

,然后对其进行编辑,然后再次保存在相同的键:

boxPatient.put(widget.index, patients);

你可以说我们刚刚用这个过程更新了它。

最新更新