В моем приложении на основе Dart я только что заметил, что могу опустить new
ключевое слово, и все работает отлично.
Вместо final widget = new Widget();
я тоже могу использовать final widget = Widget();
.
Это как-то влияет на код?
Нет. С Dart 2 (нажмите для объявления с дополнительной информацией)new
, а также const
ключевыми словами были сделаны по желанию .
Это означает, что он new Widget()
делает то же самое, что и сам Widget()
по себе.
Однако const
ключевое слово может изменить значение, которое не было бы const
неявным, на const
.
Поэтому вам нужно будет явно указать, const
когда это необходимо.
new
илиconst
они все еще необходимы (я не помню примеров или правил). Они могут предпринять еще одну попытку после Dart 2 сделать его повсюду необязательным.new
требуется. Если вы пропуститеnew
правильную программу, она всегда будет работать одинаково. Если вы удалитеconst
рабочую программу, то в большинстве случаев, когда вам придется писать,const
чтобы программа была действительной, она все равно будет действительной. Каждый раз, когдаconst
выражение уже окружено, вы можете опустить вложенную const.В Dart 2, если вы вызываете конструктор, например функцию, без символа
new
илиconst
перед ним, это эквивалентно использованиюnew
. Если вам нужен вызов const, вы должны поставить егоconst
впереди.Внутри константного выражения вам не нужно писать
const
снова, а в некоторых контекстах, требующих константных выражений (например, выражения switch case и инициализаторы константных переменных), вам даже не нужна внешняя константа.Так что вам никогда не нужно писать
new
.Команда разработчиков языка Dart хочет разрешить выражения, в которые вы можете вставить либо
new
или,const
но при этом вызов будет правильным (то есть константный конструктор с постоянными аргументами) по умолчаниюconst
вместо вставкиnew
, надеюсь, в раннем обновлении Dart 2. По этой причине , Я рекомендую написатьnew
его передObject()
любым другим конструктором const, где вам нужно, чтобы объект был новым экземпляром. Это очень редкий случай, обычно вы не заботитесь об идентичности вашего неизменяемого объекта (поэтому вставкаconst
считается хорошей идеей).источник
Как и во всех других ответах, в Dart 2 использование не
new
является обязательным. Кроме того, использованиеnew
не рекомендуется руководящими принципами «Эффективный дротик» .источник
new
Ключевое слово было сделано необязательным в Dart 2. В настоящее время, вызывая класс всегда возвращает новый экземпляр этого класса. По моей рекомендации, вы можете использовать его ( НЕ ОБЯЗАТЕЛЬНО ) вне определения макета, но не используйте его внутри макетов.Еще один момент, которым я хотел бы поделиться с вами, ребята, заключается в том, что если вы используете ключевое слово
new
илиconst
при объявлении виджетов , вы также можете увидеть значок +, который вы можете использовать для свертывания и развертывания кода тела виджета. Это полезно, когда вы хотите свернуть / скрыть остальной код виджета в файле dart во время работы над другим кодом виджета в том же файле.источник
new
это не рекомендуется: его использование выглядит так, как будто оно безоговорочно создает новый экземпляр, хотя это может не быть.