Вам нужно использовать "новое" ключевое слово в Dart?

В моем приложении на основе Dart я просто заметил, что могу опустить new ключевое слово, и все работает отлично.

Вместо final widget = new Widget(); Я также могу использовать final widget = Widget(); ,

Это влияет на код?

Ответ 1

Нет. С Dart 2 (нажмите для объявления с дополнительной информацией) ключевые слова new, а также const были сделаны необязательными.

Это означает, что new Widget() делает то же самое, что и Widget().


Однако ключевое слово const может изменить значение, которое неявно не будет const, на const.
Поэтому вам нужно будет явно указать const при необходимости.

Ответ 2

В Dart 2, если вы вызываете конструктор как функцию, без new или const перед, то это эквивалентно использованию new. Если вы хотите вызвать const, тогда вы должны поставить const перед собой.

Внутри выражения const вам больше не нужно писать const, и в некоторых контекстах, требующих выражения const (например, выражения case case и инициализаторы константных переменных), вам даже не нужен внешний const.

Поэтому вам больше не нужно писать new.

Команда языка Dart хочет разрешить выражения, в которые вы можете вставить либо new либо const и все еще иметь правильное обращение (то есть конструктор const с постоянными аргументами) по умолчанию, чтобы вставлять const вместо new, надеюсь, в раннем обновлении до Dart 2 По этой причине я рекомендую писать new перед Object() или любым другим конструктором const, где вам нужен объект, который будет новым экземпляром. Это очень редкий случай, обычно вам не нужна личность вашего неизменяемого объекта (вот почему вставка const считается хорошей идеей).

Ответ 4

new ключевое слово было сделано необязательным в Dart 2. На данный момент вызов класса всегда будет возвращать новый экземпляр этого класса. Согласно моей рекомендации, вы можете использовать его (НЕ ОБЯЗАТЕЛЬНО) вне определения макета, но не указывать внутри макетов.

Еще один момент, которым я хотел бы поделиться с вами, ребята, это то, что если вы используете ключевое слово new или const при объявлении виджетов, вы также можете увидеть значок +, который можно использовать для свертывания и расширения кода тела виджета. Это полезно, когда вы хотите свернуть/скрыть остальной код виджета в файле dart при работе с другим кодом виджета в том же файле.