我对为什么我执行的这种转换会引发异常感到有些困惑。这是代码:
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)的映射列表,为什么我不能以这种方式进行投射?
答案 0 :(得分:0)
我想您会使用:
var childrenJson = List.cast<Map<String,dynamic>>(myJson['children]);
,如果无法强制转换任何子代,它将在运行时引发异常。 “ as”更多是编译时的东西,只有在编译器可以将其推断为类型时才能使用。