Оператор ?[]
Оператор ?[] в Dart используется для безопасного доступа к элементам списков или других коллекций по индексу. Если объект, у которого запрашивается элемент, равен null, то операция не выбрасывает исключение, а сразу возвращает null. В качестве параметра оператор принимает индекс элемента, к которому нужно получить доступ.
Синтаксис
object?[index]
Пример
Давайте попробуем обратиться к элементу списка, который равен null, используя обычный доступ по индексу [] и безопасный ?[]:
void main()
{
List<String>? list = null;
// print(list[0]); // Ошибка выполнения
print(list?[0]);
}
Результат выполнения кода:
null
Пример
Если же список не равен null, оператор работает как обычный доступ по индексу и возвращает значение элемента:
void main()
{
List<String>? list = ['a', 'b', 'c', 'd', 'e'];
print(list?[2]);
}
Результат выполнения кода:
"c"
Пример
Оператор ?[] также можно использовать для доступа к значениям в Map, если сама мапа может быть null. При этом ключ передается в квадратных скобках:
void main()
{
Map<String, int>? map = null;
print(map?['key']);
}
Результат выполнения кода:
null