
Как и другие языки, Flutter Dart также предоставляет операторы с нулевым значением, которые заставляют нас иметь дело с переменными, допускающими значение NULL. Давайте начнем понимать их с этого фрагмента кода:

Этот код довольно прост, я создал две строки, допускающие значение NULL, что означает две строки, которым разрешено содержать значения null. При использовании метода .toUpperCase() для этих строк мы видим эту ошибку времени компиляции. Эта ошибка имеет смысл, потому что это и есть безопасность null. Dart сообщает вам, что в этот момент эта переменная может быть нулевой, поэтому вы должны обработать ее перед компиляцией. И для обработки нулевых значений Dart предоставляет вам операторы, учитывающие нулевые значения.
1) Оператор безопасной навигации ( ?. )
В качестве решения вышеуказанной проблемы мы будем использовать Safe Navigation Operator. Мы безопасно перейдем к методу .toUpperCase(), изменив оператор . на .?. Легко, правда?

Вот еще один пример кода, где вы можете использовать безопасный оператор навигации:

Точно так же здесь appUser, адрес, страна и город - могут быть обнулены, поэтому Dart показывает ошибку времени компиляции, чтобы мы могли их обработать.
Как и ожидалось, замена каждого . оператором безопасной навигации ?. решает проблему.

Кто-то может спросить, Хуссейн, а что, если вместо этого я заменю его оператором взрыва !? Так:

Ну-ну, крашится во время выполнения, причина возвращает нас к нулевым принципам безопасности. Добавив оператор !, вы сказали Dart — Эй, Дарт, уверяю тебя, эта переменная никогда не будет нулевой, если это так, не стесняйся бросать ошибка. Дарт сделал именно то, что ты сказал. Взрыв!!
Вы видите красный экран на Flutter со знаменитой ошибкой:
Null check operator used on a null value
2) Оператор по умолчанию, поддерживающий нуль ( ?? )
Этот оператор также называется оператором (if-null), и, как бы просто это ни звучало, он проверяет, является ли переменная нулевой или нет.

Фрагмент кода выше точно такой же, как этот:

Вы также можете использовать оператор по умолчанию ?? в сочетании с оператором безопасной навигации ?.. Например, в приведенном ниже фрагменте кода будет напечатано «Hello», если какая-либо из переменных, допускающих значение null, имеет значение null.

3) Null-Aware оператор распространения ( …? )

Как бы вы решили эту ошибку времени компиляции? Что ж, изменив оператор спреда ... на оператор спреда с нулевым значением ...?

Этот оператор добавит второй список в третий список, только если он не равен нулю. Приведенный выше код точно такой же, как:

4) Резервный оператор присваивания ( ??= )
Это присваивает значение, если переменная имеет значение null. В приведенном ниже коде он присваивает 3 переменной myNumber, если она равна нулю.

Это все интересно, если вы понимаете это правильно!
Это все, что у нас есть для нулевых операторов, увидимся в следующем!
