我有一个注册的EventAdpator,它保存着我的事件数据.我正在从API读取数据并存储在配置单元中.

我的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>'.
  }
}

以前,数据是这样写入配置单元的.

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 [];
}

当try 从getAllEvents返回数据时,显示此错误,我不确定如何更正它.

无法从该方法返回类型为‘List’的值 "getAllEvents",因为它的返回类型为"List"

推荐答案

Hive.box是一个泛型方法,因此您需要使用预期的类型(即Event)来调用它.

class HiveEvents {
  static final eventsBox = Hive.box<Event>("eventsbox"); // (1) add <Event> here

  static addEvent(Map data) {
    // (2) You should convert Map to Event first before passing it to the add method. If Event is serializable, you can use the fromJson method
    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!; // (3) add '!' here
    }).toList();

    return data;
  }
}

此外,您不需要手动将键映射到值.你可以使用values getter:

  static List<Event> getAllEvents() {
    final data = eventsBox.values.toList();

    return data;
  }

Flutter相关问答推荐

ShaderMask上的文本渐变问题

类型int不是可迭代动态tmdbapi类型的子类型<>

Flutter版本3.19.2需要更新版本的Kotlin Gradle插件./android/build.gradle:ext.kotlin_version = latest-version>'

如何在Flutter 中播放音频

如何在Flutter 中不从getX库中初始化GetxController中的变量

使用GO_ROUTER在模式内导航

如何正确处理Flutter 翼中使用火基时发生的碰撞?

我怎样才能go 掉这个底部导航栏上的白色背景

Flutter-Riverpod:如何只从提供者读取一次值

在flutter中从图库或相机中 Select 图像的方法

在 flutter 中获取最喜欢的文档

如何让小部件根据小部件的大小构建不同的布局?

flutter 在文本字段中更改部分文本选定 colored颜色

在 Flutter 中读取 Firebase 数据库数据时遇到问题

如何在 flutter 中制作这种类型的扩展瓦片

在 Flutter 中,您什么时候应该更喜欢Widget继承而不是组合?

我已经删除了我的 .android 密钥库,但我没有使用它,如何生成一个新的?

如何从用户 Flutter 导航抽屉中隐藏管理菜单

Flutter - 如何调用此函数?

Flutter 广告导致延迟