Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

@Required anula as chaves opcionais?

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?

2 respostas

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:

  • asas ( mas não vai te dizer que ele quer asas, só vai dizer que ele quer alguma coisa..)
  • fogo ( aqui ele vai te dizer especificamente que ele quer FOGO)
  • e não vai pedir pra você colocar escamas (mas se quiser pode)

espero ter ajudado :)

solução!

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.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software