Flutter Hive 无法检索 Map

Posted

技术标签:

【中文标题】Flutter Hive 无法检索 Map【英文标题】:Flutter Hive unable to retrieve Map 【发布时间】:2021-11-13 16:07:20 【问题描述】:

我正在尝试将 Map() 存储在 hive 数据库中。我可以存储但我无法检索 Map() 它提示错误

Unhandled Exception: type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Map<String, int>?' in type cast

代码:

数据控制器


Box<Map<String, int>> hiveBox = Hive.box('SaveBetBox');

  void betStorage(String? matchKey, String? statKey, int? statIndex) 
    // Checks if the hive box has the data with following key if not adds
    hiveBox.containsKey(matchKey)
        ? null
        : hiveBox.put(
            matchKey,
            Map<String, int>(),
          );
    // Extract hive map to update or add Key values to Map with specific Key
    Map<String, int>? tm = hiveBox.get(matchKey);
    if (tm![statKey!] == null) 
      tm[statKey] = statIndex!;
      hiveBox.put(matchKey, tm);
     else 
      tm.update(statKey, (value) => statIndex!);
    
    Map<String, int>? dd = hiveBox.get(matchKey);
    print('This is $statKey $dd![statKey]');

  

// Retrieve FN 
  void onitintHive() 
    //Storing value i.e Map() of specific key  in var
    Map<String, int>? _dd = hiveBox.get("RVB");

    // Extracting values from the map
    int? goal1 = _dd!['t1goalkey'];
    int? yc = _dd['t1yckey'];

    print('This is dd : $_dd!['t1goalkey']');
    print('This is T1 Goal : $goal1');
    print('This is T1 YC : $yc');
  

main() 中的主框

  await Hive.openBox<Map<String, int>>('SaveBetBox');

【问题讨论】:

编辑框> hiveBox = Hive.box('SaveBetB​​ox');到Box&lt;Map&lt;String, int&gt;&gt; hiveBox = Hive.box&lt;Map&lt;String, int&gt;&gt; ('SaveBetBox'); 解决不了问题。还是同样的错误。 @CyrustheGreat 【参考方案1】:

我解决了这个问题。我可能错了,但似乎 Hive Box 只返回具有动态类型的地图,即Map&lt;dynamic, dynamic&gt;()。发生错误是因为我试图将Map&lt;dynamic, dynamic&gt;()Map&lt;String, int&gt;() 匹配。将接收者地图更改为Map&lt;dynamic, dynamic&gt;() 解决了这个问题。

【讨论】:

以上是关于Flutter Hive 无法检索 Map的主要内容,如果未能解决你的问题,请参考以下文章

Flutter hive:无法生成适配器文件

用于 Geopoint 的 Flutter Hive 适配器

无法找到创建的 Hive 表,也无法从表中检索数据

无法检索 Flutter 项目中 Graphql 突变中发生的错误

我无法从 Firestore Flutter 检索和查看数据

在 Flutter 的屏幕之间传递 Hive 框