Как я могу преобразовать карту дротиков в <String, List<List>> ?

#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;
}