不明白为什么这个强制转换无效

时间:2019-06-29 14:18:05

标签: dart

我对为什么我执行的这种转换会引发异常感到有些困惑。这是代码:

var myJson = json.decode(response.body);
List<Map<String,dynamic>> childrenJson = myJson['children'] as List<Map<String,dynamic>>;

但这可以按预期工作:

var myJson = json.decode(response.body);
    List<dynamic> childrenJson = myJson['children'];
    Map<String, dynamic> item = childrenJson[0];

如果children条目是(String,dynamic)的映射列表,为什么我不能以这种方式进行投射?

1 个答案:

答案 0 :(得分:0)

我想您会使用:

var childrenJson = List.cast<Map<String,dynamic>>(myJson['children]);

,如果无法强制转换任何子代,它将在运行时引发异常。 “ as”更多是编译时的东西,只有在编译器可以将其推断为类型时才能使用。