Flutter 2:Cast List<dynamic> or Map<dynamic> on what you desir
Flutter 2: Cast List<dynamic> or Map<dynamic> on what you desire
我在将变量转换为特定类型的应用程序方面遇到了麻烦。
例如:
Map<dynamic>
变成 Map<String, List<Map<String, dynamic>>>?
你会怎么做?
首先我初始化我的变量:
Map<String, List<Map<String, dynamic>>>? test = {
[{'test': 'test'}]
}
在这里,我想执行深度复制,所以我使用 jsonEncode jsonDecode,它将克隆我的变量并将我的克隆转换为 Map<dynamic>
。
jsonDecode(jsonEncode(test))
接下来我想将结果转换为 MapEntry<String, List<dynamic>>
。
(jsonDecode(jsonEncode(test)) as Map).map((key, value) => MapEntry(key, value))
最后我想把我的值 (List<dynamic>
) 转换成 List<Map<String, dynamic>>
Map<String, List<Map<String, dynamic>>>? result = (jsonDecode(jsonEncode(test)) as Map).map((key, value) =>
MapEntry(key, (value as List).map((e) => e as Map<String, dynamic>).toList())
此处变量现在的类型为:Map<String, List<Map<String, dynamic>>>?
这就是使用深度转换执行深度复制的答案。
我在将变量转换为特定类型的应用程序方面遇到了麻烦。
例如:
Map<dynamic>
变成 Map<String, List<Map<String, dynamic>>>?
你会怎么做?
首先我初始化我的变量:
Map<String, List<Map<String, dynamic>>>? test = {
[{'test': 'test'}]
}
在这里,我想执行深度复制,所以我使用 jsonEncode jsonDecode,它将克隆我的变量并将我的克隆转换为 Map<dynamic>
。
jsonDecode(jsonEncode(test))
接下来我想将结果转换为 MapEntry<String, List<dynamic>>
。
(jsonDecode(jsonEncode(test)) as Map).map((key, value) => MapEntry(key, value))
最后我想把我的值 (List<dynamic>
) 转换成 List<Map<String, dynamic>>
Map<String, List<Map<String, dynamic>>>? result = (jsonDecode(jsonEncode(test)) as Map).map((key, value) =>
MapEntry(key, (value as List).map((e) => e as Map<String, dynamic>).toList())
此处变量现在的类型为:Map<String, List<Map<String, dynamic>>>?
这就是使用深度转换执行深度复制的答案。