No meu aplicativo baseado em Dart, acabei de notar que posso omitir a new
palavra - chave e tudo funciona perfeitamente.
Em vez de final widget = new Widget();
também posso usar final widget = Widget();
.
Isso tem algum efeito no código?
Não, não tem. Com o Dart 2 (clique para ver o anúncio com mais informações), as palavras-chave new
e também const
se tornaram opcionais .
Isso significa que new Widget()
faz exatamente o mesmo que Widget()
por conta própria.
A const
palavra-chave pode, no entanto, alterar um valor que não seria a const
implicitamente para a const
.
Portanto, você terá que especificar explicitamente const
quando necessário.
new
ouconst
ainda são obrigatórios (não me lembro de exemplos ou regras). Eles podem fazer outra tentativa após o Dart 2 para torná-lo opcional em todos os lugares.new
é obrigatório. Se você omitirnew
um programa correto, ele sempre continuará funcionando da mesma maneira. Se você removerconst
de um programa em funcionamento, na maioria dos casos em que teria que escreverconst
para que o programa fosse válido, ele ainda será válido. Sempre que já houver umconst
circundando a expressão, você pode omitir o const aninhado.No Dart 2, se você invocar um construtor como uma função, sem um
new
ouconst
na frente, é equivalente a usarnew
. Se você quiser uma invocação const, deve colocá-laconst
na frente.Dentro de uma expressão const, você não precisa escrever
const
novamente, e em alguns contextos que requerem expressões const (como expressões de switch case e inicializadores de variáveis const), você nem mesmo precisa do const externo.Então, você nunca precisa escrever
new
.A equipe da linguagem Dart deseja permitir expressões onde você pode inserir
new
ouconst
e ainda ter a invocação correta (ou seja, um construtor const com argumentos constantes) para inserir como padrão emconst
vez denew
, esperançosamente em uma atualização antecipada do Dart 2. Por esse motivo , Eu recomendo escrevê-new
lo antes deObject()
, ou qualquer outro construtor const onde você precisa que o objeto seja uma nova instância. Esse é um caso muito raro, geralmente você não se preocupa com a identidade do seu objeto imutável (é por isso que inserirconst
é considerado uma boa ideia).fonte
Como todas as outras respostas afirmam, no Dart 2, o uso
new
é opcional. Além disso, o usonew
é desencorajado pelas diretrizes de Dardos Eficazes .fonte
A
new
palavra-chave tornou-se opcional no Dart 2. A partir de agora, chamar uma classe sempre retornará uma nova instância dessa classe. Conforme minha recomendação, você pode usá-lo ( NÃO OBRIGATÓRIO ) fora de uma definição de Layout, mas omitir dentro de Layouts.Mais um ponto que eu gostaria de compartilhar com vocês é que se você usar uma palavra
new
-const
chave ao declarar widgets , você também poderá ver o ícone + que pode ser usado para recolher e expandir o código do corpo do widget. Isso é útil quando você deseja recolher / ocultar o código do widget restante no arquivo dart enquanto trabalha em outro código do widget no mesmo arquivo.fonte
new
é desencorajado: usá-lo parece que cria uma nova instância incondicionalmente, quando talvez não.