gpt4 book ai didi

flutter - 类型 '_InternalLinkedHashMap' 不是类型转换中类型 'Map' 的子类型

转载 作者:行者123 更新时间:2023-12-05 04:48:52 25 4
gpt4 key购买 nike

我无法转换 Map<String, dynamic>进入Map<String, Map<String, String> .执行此操作的最佳方法是什么?

请注意,我在 analysis_options.yaml 中使用高级分析选项:

analyzer:
enable-experiment:
- extension-methods
strong-mode:
implicit-casts: false
implicit-dynamic: false

我试过了

var de = Map<String, Map<String, String>>.from((json.decode(await rootBundle.loadString('lang/de.json'))) as Map<String, dynamic>);

var de = (json.decode(await rootBundle.loadString('lang/de.json')) as Map<String, dynamic>).cast<String, Map<String, String>>();

var de = Map.castFrom<String, dynamic, String, Map<String, String>>((json.decode(await rootBundle.loadString('lang/de.json'))) as Map<String, dynamic>);

所有尝试都引发了以下运行时错误:type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Map<String, String>' in type cast

最好的方法是什么?我认为这可以通过遍历 map 来完成,但如果这些 map 非常大,这是一项昂贵的操作。有没有办法在不迭代的情况下转换它们?

最佳答案

我不认为在处理像这样的嵌套数据时可以转换为适当的类型。

关于转换嵌套列表这里有一个类似的讨论:https://github.com/dart-lang/language/issues/1574

我认为在这种情况下您唯一可以做的就是以某种方式迭代数据。

一种可能的解决方案:

final data = await rootBundle.loadString('lang/de.json');
final Map<String, Map<String, String>> de = {
for (final entry in (json.decode(data) as Map).entries)
entry.key as String: {
for (final e in (entry.value as Map).entries)
e.key as String: e.value as String,
},
};

关于flutter - 类型 '_InternalLinkedHashMap<String, dynamic>' 不是类型转换中类型 'Map<String, String>' 的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67857485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com