Quando vc usa as chaves{}, ele fica opcional e quando vc coloca o @required ele fica obrigatório. Isso não anula a função das chaves de deixar o argumento opcional?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Quando vc usa as chaves{}, ele fica opcional e quando vc coloca o @required ele fica obrigatório. Isso não anula a função das chaves de deixar o argumento opcional?
Oi Adriano tudo bom irmão? Desculpa a demora pra responder. Na verdade o @required vai te ajudar quando você for usar a função! Ele vai te dizer o que está faltando quando você não souber o que tem que colocar nela pra ela funcionar ( lembra lá do onTap nos botões que é obrigatório? é por conta do @required!)
Então vamos lá! vamos supor que existe uma nova classe chamada Dragões:
class Dragões extends StatelessWidget {
final Asas asas;
final Escamas escamas;
final Fogo fogo;
Dragões(this.asas, {@required this.fogo}, {this.escamas});Sabemos que Dragões sempre tem asas e sempre cospem fogo mas alguns dragões não tem escamas
Isso significa que quando você for usar a Classe dragão ele vai te pedir pra colocar:
espero ter ajudado :)
Oi Adriano, tudo bem?
O @required é necessário quando você tem mais de 1 parâmetro nomeado e deseja que algum dos parâmetros seja obrigatório. Dessa forma, é possível "decorar" algum parâmetro para que em excessão ele seja obrigatório.
class Pessoa {
// Suponhamos que o atributo nome tenha que ser
// obrigatóriamente informado
final String nome;
final int idade;
final String endereco;
// Anotamos o parâmetro com @required no construtor da classe
Pessoa({
@required this.nome,
this.idade,
this.endereco,
});
}Dessa forma, através do construtor da classe é possível anotar aquele atributo como requerido.