05. Map
Что такое Map
?
Map
?Map
— это структура данных, похожая на словарь или таблицу, где у каждой записи есть уникальный ключ и значение, связанное с этим ключом. Например, представь, что у тебя есть телефонный справочник. В нем имя человека – это ключ, а его номер телефона – это значение. Если ты знаешь имя, то сразу найдешь его номер телефона.
Для чего нужен Map
?
Map
?Map
полезен, когда нужно хранить данные в формате "вопрос-ответ", "имя-значение" или "ключ-значение". Это помогает легко и быстро находить нужную информацию. Например, представь себе интернет-магазин: чтобы узнать цену конкретного товара, достаточно знать его название — как раз тут и пригодится Map
.
Как создать Map
?
Map
?В Flutter (и в языке Dart) Map
создается очень просто. Вот несколько примеров:
Пример 1: Создание простого Map
для хранения данных о товарах
Здесь
String
— тип данных для ключей (названия продуктов).int
— тип данных для значений (цены продуктов).
Такой Map
будет хранить продукты как ключи (например, 'Apples'
), а их цены как значения (например, 50
).
Пример 2: Создание Map
с разными типами значений
Иногда значения бывают не только числами, но и другими типами данных. Например, можно хранить информацию о каждом товаре, включая его описание и наличие.
Здесь dynamic
позволяет использовать разные типы значений:
'name'
— строка (String
).'price'
— число (int
).'inStock'
— логическое значение (bool
), указывающее на наличие товара.
Как добавлять и изменять значения в Map
?
Map
?Чтобы добавить новый элемент или изменить существующий, достаточно указать ключ и значение:
Как получать данные из Map
?
Map
?Чтобы найти значение по ключу, просто укажи ключ в квадратных скобках:
Если ключа не существует, Map
вернет null
, и это нужно учитывать.
Как перебрать все элементы в Map
?
Map
?Если ты хочешь посмотреть все ключи и значения, можно воспользоваться циклом. Например:
Чтение списка из Map
с использованием GridView.builder
Map
с использованием GridView.builder
Теперь представим, что у нас есть список из нескольких Map
, где каждый Map
описывает отдельный продукт.
Пример списка Map
В этом списке каждый Map
— это отдельный товар.
Как использовать GridView.builder
для отображения списка Map
?
GridView.builder
для отображения списка Map
?С помощью GridView.builder
мы можем вывести список товаров в виде сетки. Это часто используется для отображения товаров в приложениях.
Пример кода:
Объяснение кода
gridDelegate
: Определяет, как элементы будут расположены.crossAxisCount: 2
указывает на 2 столбца, так что товары будут выстраиваться в две колонки.itemCount
: Указывает, сколько элементов будет в списке (длина спискаproducts
).itemBuilder
: Эта функция создает виджет для каждого товара.product = products[index]
: ДостаемMap
конкретного товара по индексу.Card
: Создаем карточку для каждого товара.Внутри
Card
мы используемColumn
, чтобы расположить элементы вертикально:Text(product['name'])
: Отображаем название товара.Text('${product['price']}')
: Отображаем цену.Text(product['inStock'] ? 'В наличии' : 'Нет в наличии')
: Отображаем текст о наличии.
Этот код позволяет создать сетку товаров с карточками, где каждый продукт отображается в виде отдельного Map
в List<Map>
.
Last updated