#json #flutter #dart #casting
#json #флаттер #dart #Кастинг
Вопрос:
Я считываю некоторые данные из общих префиксов и jsonDecode их в переменную с именем shapes . Когда я проверяю фигуры в отладчике, они выглядят как правильный тип. Но когда я присваиваю ее следующей переменной «theShapes», я получаю такие ошибки, как Unhandled Exception: type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Map<String, List<List<int>>>'
static var theShapes = <String, List<List<int>>>{
'general': [
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
],
....
};
Код, используемый для приведения переменной «shapes» к типу «theShapes», на данный момент выглядит следующим образом:
theShapes = shapes
.map((key, value) => MapEntry(key, List.castFrom(value).toList()));
Комментарии:
1. Попробуйте это:
final shapesMap = shapes.map((key, value) => MapEntry(key, List<List<int>>.from(value))); theShapes = Map<String, List<List<int>>>.from(shapesMap);
2. Хорошая попытка, но этот код выдает эту ошибку: Необработанное исключение: тип ‘List<dynamic>’ не является подтипом типа ‘List<int>’ в первой строке.
Ответ №1:
вот так
go(String data){
final decodedData = jsonDecode(data);
if(decodedData is Map){
return decodedData.map<String,List<List<int>>>((key, value) => MapEntry(key as String, (value as List).map<List<int>>((e) => (e as List).map<int>((i) => i as int).toList()).toList()));
}
return null;
}