【发布时间】:2023-03-02 21:27:01
【问题描述】:
对不起,我是使用 Flutter 和使用 Hive 本地存储的新手。
我正在使用
hive: ^2.0.4
hive_flutter: ^1.0.0
我这样在主函数中打开盒子
Future<void> main() async {
await Hive.initFlutter();
await Hive.openBox<List<Event>>("events");
}
从服务器获取数据后,我使用这样的代码将所有事件保存到配置单元
final eventsBox = Hive.box<List<Event>>("events");
final List<Event> eventsFromServer = await getEventsFromServer();
eventsBox.put("recommended_events", eventsFromServer);
但我在尝试从框中读取数据时出错,我是这样读取的
final eventsBox = Hive.box<List<Event>>("events");
// error in this one line below
final eventsFromHive = eventsBox.get("recommended_events", defaultValue: []) ?? [];
type 'List ' 不是类型 'List?' 的子类型在类型 演员表
如何解决这种类型转换错误?
据here 中的文档称
get() 返回的列表总是 List 类型(Maps 类型 地图)。使用 list.cast() 将它们转换为 具体类型。
我不知道这是否是我的问题的解决方案,但我不知道如何在我的代码中实现它。
我是这样尝试的,但我仍然有同样的错误
final eventsFromHive = eventsBox.get("recommended_events")!.cast<Event>();
或者我编写用于保存和读取列表的语法的方式完全错误?请帮忙:)
【问题讨论】:
-
final eventsFromHive = eventsBox.get("recommended_events", defaultValue: <Event>[]) ?? []; -
@sajithlakmal 不幸的是它不起作用:(
-
你是什么
Event对象 -
您能否发布您的事件模型类定义
标签: flutter flutter-hive