#flutter #casting
Вопрос:
У меня были проблемы с моим приложением, чтобы привести мои переменные к определенным типам.
Например:
Map<dynamic>
в Map<String, List<Map<String, dynamic>>>?
Как бы вы поступили ?
Ответ №1:
Сначала я инициализирую свои переменные:
Map<String, List<Map<String, dynamic>>>? test = {
[{'test': 'test'}]
}
Здесь я хочу выполнить глубокую копию, поэтому я использую jsonEncode jsonDecode, который клонирует мою переменную и преобразует мой клон в a Map<dynamic>
.
jsonDecode(jsonEncode(test))
Затем я хочу перевести свой результат в a 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>>>?
Так что это ответ на выполнение глубокой копии с глубоким литьем.