Могут ли необязательные параметры в null-safe dart автоматически обнуляться? Если нет, есть ли простой способ сделать мой код нулевым?
Я заметил, что еще несколько пользователей тегов Dart/Flutter пробуют нулевую безопасность в новых версиях Dart SDK, и я начал читать об этом, начиная с этой статьи Medium.
Я заметил, что во всех своих примерах они используют позиционные обязательные аргументы. Но как будет работать нулевая безопасность с необязательными параметрами, как позиционными, так и именованными?
Необязательные параметры по сути null
Значит ли это, что все необязательные параметры должны быть объявлены с синтаксисом объявления переменных, допускающих значение NULL, с включенной безопасностью NULL? Кажется лишь незначительное неудобство добавить?
, но это может привести к поломке большого количества кода, в котором чрезмерно используются необязательные параметры. Сможет ли dart сделать исключение для необязательных параметров (зная, что они всегда будут иметь значение NULL), чтобы избежать таких больших изменений? или есть ли более простая альтернатива обеспечению нулевой совместимости моего кода, которая позволяет избежать этих изменений?
2 ответа
В нулевом безопасном Dart фактические необязательные параметры должны либо иметь значение по умолчанию, либо они должны допускать значение NULL (в этом случае они имеют значение по умолчанию по умолчанию, равное null
).
Нет никаких исключений. Из-за значений по умолчанию необязательные параметры по своей природе не допускают значения NULL.
Вы не должны ожидать, что существующий код будет работать с нулевой безопасностью как есть. Ожидается, что вы выполните миграцию кода, чтобы обеспечить нулевую безопасность.
Самый простой способ сделать ваш код нулевым - запуститьdart migrate
на вашем проекте. Он вставит большую часть необходимого?
s для вас.
В чем проблема с добавлением
required
к опциональным параметрам, не допускающим значения NULL?