En mi aplicación basada en Dart, acabo de notar que puedo omitir la new
palabra clave y todo funciona perfectamente bien.
En lugar de final widget = new Widget();
también puedo usar final widget = Widget();
.
¿Tiene esto algún efecto en el código?
new
oconst
todavía son necesarios (no me acuerdo ejemplos o reglas). Es posible que hagan otro intento después de Dart 2 para que sea opcional en todas partes.new
se requiera. Si omitenew
de un programa correcto, siempre seguirá funcionando de la misma manera. Si se quitaconst
de un programa de trabajo, a continuación, en la mayoría de los casos en los que le tienen que escribirconst
para que el programa sea válida, seguirá siendo válida. Siempre que ya haya unconst
alrededor de la expresión, puede omitir la const anidada.En Dart 2, si invoca un constructor como una función, sin
new
oconst
al frente, entonces es equivalente a usarnew
. Si desea una invocación constante, debe ponerconst
al frente.Dentro de una expresión const, no es necesario volver a escribir
const
, y en algunos contextos que requieren expresiones const (como expresiones de cambio de mayúsculas y minúsculas e inicializadores de variables const), ni siquiera necesita la const externa.Así que no necesitas escribir nunca
new
.El equipo de lenguaje de Dart quiere permitir expresiones en las que puede insertar
new
oconst
y que la invocación sea correcta (es decir, un constructor constante con argumentos constantes) para que se inserten de forma predeterminada enconst
lugar denew
, con suerte, en una actualización temprana de Dart 2. Por esa razón , Recomiendo escribirlonew
delante deObject()
, o cualquier otro constructor constante donde necesite que el objeto sea una nueva instancia. Ese es un caso muy raro, por lo general no le importa la identidad de su objeto inmutable (razón por la cual insertarconst
se considera una buena idea).fuente
Como indican todas las demás respuestas, en Dart 2, el uso
new
es opcional. Además, las pautas de Effective Dart desaconsejan su usonew
.fuente
La
new
palabra clave se hizo opcional en Dart 2. A partir de ahora, llamar a una clase siempre devolverá una nueva instancia de esa clase. Según mi recomendación, puede usarlo ( NO OBLIGATORIO ) fuera de una definición de diseño, pero omitirlo en diseños internos.Un punto más que me gustaría compartir con ustedes es que si usa la palabra clave
new
oconst
mientras declara widgets , también puede ver el ícono + que puede usar para contraer y expandir el código del cuerpo del widget. Esto es útil cuando desea contraer / ocultar el código del widget restante en el archivo dart mientras trabaja en otro código del widget en el mismo archivo.fuente
new
se desaconseja: usarlo parece que crea incondicionalmente una nueva instancia cuando es posible que no.