Ответ
Null в Dart представляет собой отсутствие значения. С введением null safety (начиная с Dart 2.12 и Flutter 2.0) система типов стала строже, чтобы предотвратить ошибки времени выполнения из-за разыменования null.
Основные концепции:
- Non-nullable типы (по умолчанию): Переменная не может содержать
null.String name = 'Alice'; // OK String name = null; // Ошибка компиляции - Nullable типы (с
?): Явно указываем, что переменная может бытьnull.String? nickname; // Начальное значение null nickname = 'Bob'; // OK nickname = null; // OK - Безопасный доступ и операторы:
?.(Опциональный доступ): Выполняет операцию, только если объект неnull.int? length = nickname?.length; // length будет null, если nickname null??(Оператор если-null): Предоставляет значение по умолчанию.String displayName = nickname ?? 'Гость'; // Если nickname null, используем 'Гость'!(Оператор утверждения non-null): Говорим компилятору: "Я уверен, что здесь не null". Использовать с осторожностью.String definitelyNotNull = nickname!; // Runtime-ошибка, если nickname null
- Обязательные параметры (
required): Гарантирует, что аргумент будет передан.void greet({required String name}) { ... } greet(name: 'Alice'); // OK greet(); // Ошибка компиляцииNull safety делает код более предсказуемым и уменьшает количество runtime-исключений.