我注册了一个 EventAdpator,它保存我的事件数据。我正在从 API 读取数据并将其存储在 Hive 中。
我的Hive函数是这样的
class HiveEvents {
static final eventsBox = Hive.box("eventsbox");
static addEvent(Map data) {
eventsBox.add(data);
}
static addEvents(List<Event> data) {
eventsBox.addAll(data);
}
static List<Event> getAllEvents() {
final data = eventsBox.keys.map((key) {
final value = eventsBox.get(key);
return value;
}).toList();
return data; // A value of type 'List<dynamic>' can't be returned from the method 'getAllEvents' because it has a return type of 'List<Event>'.
}
}
之前数据都是这样写入hive的。
final Uri url = Uri.https(authority,path, queryParameters);
final http.Response result = await http.get(url);
if (result.statusCode == HttpStatus.ok) {
final jsonResponse = jsonDecode(result.body);
final eventData = jsonResponse["events"];
List<Event> events =
eventData.map<Event>((i) =>
Event.fromJson(i)).toList();
HiveEvents.addEvents(events);
return events;
} else {
return [];
}
当尝试从 getAllEvents 返回数据时,显示此错误,我不确定如何纠正它。
方法无法返回“List”类型的值 “getAllEvents”,因为它的返回类型为“List”
Hive.box
是一个泛型方法,因此您需要使用预期的类型来调用它,即Event
。
class HiveEvents {
static final eventsBox = Hive.box<Event>("eventsbox"); // (1) add <Event> here
static addEvent(Map data) {
eventsBox.add(data); // (2) should convert Map to Event first before passing it to the `add` method
}
static addEvents(List<String> data) {
eventsBox.addAll(data);
}
static List<Event> getAllEvents() {
final data = eventsBox.keys.map((key) {
final value = eventsBox.get(key);
return value!; // (2) add '!' herer
}).toList();
return data;
}
}