Ответ
Map в Dart — это коллекция, хранящая данные в виде пар ключ-значение. Каждый ключ уникален и используется для доступа к соответствующему значению.
- Типы: По умолчанию создается
LinkedHashMap, сохраняющая порядок вставки. Также естьHashMap(порядок не гарантирован). - Изменяемость: Map может быть изменяемым (
var map = {};) или неизменяемым (const map = {...};). - Типизация: Ключи и значения могут быть любого типа. Рекомендуется использовать явную типизацию для безопасности:
Map<String, int> scores = {};
Основные операции и примеры:
// Создание и инициализация Map
Map<String, String> countryCapital = {
'Япония': 'Токио',
'Германия': 'Берлин',
};
// Добавление или обновление элемента
countryCapital['Франция'] = 'Париж';
// Получение значения по ключу
String? capital = countryCapital['Германия']; // 'Берлин'
// Важно: оператор [] возвращает nullable тип, если ключ может отсутствовать.
// Проверка наличия ключа
if (countryCapital.containsKey('Италия')) { ... }
// Итерация по Map
countryCapital.forEach((key, value) {
print('$key: $value');
});
// Преобразование
List<String> countries = countryCapital.keys.toList();
List<String> capitals = countryCapital.values.toList();
Типичное использование в Flutter: хранение конфигураций, кэширование данных, передача аргументов (например, Map<String, dynamic> для ModalRoute.of(context)!.settings.arguments).
Ответ 18+ 🔞
Давай разберем эту штуку, которая в Dart называется Map. Представь себе обычный бумажный словарик, ну, там, где ищешь слово и смотришь его перевод. Вот Map — это такой же цифровой словарик, только вместо «собака» и «dog» там может быть что угодно. Ключ — это слово, которое ищешь, а значение — это то, что на него найдёшь. И ключи, блядь, уникальные, два раза «собаку» не запишешь, иначе пиздец настанет и программа сломается.
Ёпта, есть у них там разные виды этих словарей. По умолчанию тебе подсовывают LinkedHashMap — это такой зануда, который помнит, в каком порядке ты слова закидывал. А есть HashMap — похуист, он слова может перетасовать как бог на душу положит, порядок не гарантирует.
Создать его можно по-разному. Самый простой способ — это фигурные скобки {}. Сделаешь var map = {}; — получишь изменяемый словарь, куда можно пихать и удалять что хочешь. А если сделаешь const map = {...}; — то это уже каменная скрижаль, нихуя не изменишь, только читай.
И вот тут, чувак, очень важный момент. Dart — язык строгий, и если ты не скажешь ему заранее, какие ключи и значения будут, он начнёт подозревать тебя во всяком. Поэтому лучше сразу объявить: Map<String, int> scores = {};. Типа, «слышь, Dart, тут ключи будут строки, а значения — числа, не парь мне мозги». И тогда он тебя не будет доёбывать nullable-типами на ровном месте.
Смотри, как с этим жить:
// Создаём словарик столиц
Map<String, String> countryCapital = {
'Япония': 'Токио',
'Германия': 'Берлин',
};
// Хочешь добавить Францию? Да хуйня вопрос!
countryCapital['Франция'] = 'Париж';
// А столицу Германии достать? Легко!
String? capital = countryCapital['Германия']; // Вернёт 'Берлин'
// Видишь этот вопросительный знак? Это потому что ключ может и не найтись. Защита от дурака, ага.
// Чтобы не гадать, есть ли ключ, спроси напрямую
if (countryCapital.containsKey('Италия')) {
print('Италия есть, но Рим мы тебе не скажем!');
}
// Пройтись по всем записям — тоже не проблема
countryCapital.forEach((key, value) {
print('Страна $key, а столица там — $value. Запомнил?');
});
// Ну и если вдруг тебе нужны просто списки стран или городов — пожалуйста
List<String> countries = countryCapital.keys.toList(); // Все ключи
List<String> capitals = countryCapital.values.toList(); // Все значения
Где это, блядь, пригождается? Да везде! В Flutter'е это вообще хлеб насущный. Конфиги приложения хранить, данные какого-нибудь пользователя кэшировать, или, что самое частое — аргументы между экранами передавать. Когда ты пишешь ModalRoute.of(context)!.settings.arguments, то это обычно как раз и есть Map<String, dynamic> — универсальная сумка, в которую можно накидать любых данных и переслать. Удобная, блядь, штука, если использовать с умом, а не пихать туда всё подряд, как в помойку.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶