我尝试用hive持久化我的日历数据,但是当我启动程序时,它抛出了以下代码:
[错误:flutter/运行时/dart_vm_initializer. cc(41)]未处理的异常:类型"Null"不是类型转换中类型"bool"的子类型
这是我的模型类:
@HiveType(typeId: 1)
class Event extends HiveObject {
@HiveField(0)
late String title;
@HiveField(1)
late DateTime eventDateTime;
@HiveField(2)
bool wholeDayEvent;
Event({
required this.title,
required this.eventDateTime,
required this.wholeDayEvent,
});
@override
String toString() => title;
}
下面是我的显示小部件的构建方法:
Expanded(
child: ValueListenableBuilder<Box<Event>>(
valueListenable: Boxes.getEvents().listenable(),
builder: (context, box, _) {
final events = box.values.toList().cast<Event>();
return ListView.builder(
itemCount: events.length,
itemBuilder: (context, index) {
return Container(
margin: const EdgeInsets.symmetric(
horizontal: 12.0,
vertical: 4.0,
),
decoration: BoxDecoration(
border: Border.all(),
borderRadius: BorderRadius.circular(12.0),
),
child: ListTile(
onTap: () => print('${box.values}'),
title: Text('${box.values}'),
),
);
},
);
},
),
),
1条答案
按热度按时间2ledvvac1#
我可以假设您更改了
Event
对象中的一些字段,而Hive
数据库不为空,因此以前存储的对象没有这些新字段,因此它们的值为null
,这会引发错误。你可以通过在使用
Hive
之前清除它来解决这个问题,这样它就可以删除以前的数据对象,并在main()
中使用新的数据对象:现在,您将拥有一个空框,并且您的代码将再次正常工作。
你应该只清除它一次,以删除以前的数据,之后你可以删除
clear()
行和正常工作。