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>>>?

这就是使用深度转换执行深度复制的答案。