我在flutter应用程序中使用hive作为nosql本地数据库。
下面是我的Hive课程:
import 'dart:convert';
import 'package:hive/hive.dart';
import 'package:lpa_exam/src/model/listofexams.dart';
import 'package:lpa_exam/src/model/profile.dart';
part 'hiveprofile.g.dart';
@HiveType()
class PersonModel extends HiveObject{
@HiveField(0)
String language;
@HiveField(1)
String examName;
@HiveField(2)
int examId;
@HiveField(3)
Profile profile;
@HiveField(4)
ListExam listexam;
@override
String toString() {
return jsonEncode({
'language': language,
'examName': this.examName,
'examId': examId,
'profile': profile,
'listexam': listexam
});
}
PersonModel(
this.language, this.examName, this.examId, this.profile, this.listexam);
}
所以,我的要求是,每次成功登录时,我都应该更新profile对象。但是为了这个,我也必须设置所有其他的。
如何只更新profile对象?
代码:
_personBox = Hive.openBox('personBox');
await _personBox.then((item) {
if (!item.isEmpty) {
print('empty');
item.putAt(0, PersonModel(...,..,..,..,...,..));
}
});
我正在使用hive版本1.2.0
参考文献:https://resocoder.com/2019/09/30/hive-flutter-tutorial-lightweight-fast-database/
2条答案
按热度按时间tgabmvqs1#
try.save()方法:
0wi1tuuw2#
就用这个
putAt()
方法,如下所示:你可以得到
productIndex
通过使用listView.Builder
这样地: