Olá Elvis, tudo bem ?
Acredito que o instrutor não chegou a comentar por ser assunto mais profundo do mundo Dart
, mas é bem simples :)
Isso nada mais é do que a chamada lista inicializadora
, ou em inglês, initializer list
, que é uma lista executada antes do corpo do construtor, então não chega a ser um construtor diferente, é apenas uma particularidade dos construtores do Dart
Tipicamente quando fazemos:
Contact(this.name, this.accountNumber)
Seria a mesma coisa de fazer:
Contact( String name, int accountNumber)
: this.name = name,
this.accountNumber = accountNumber
Tipicamente, iremos utilizar para 3 coisas:
Inicializar campos finais da nossa estrutura (mas estamos acostumados a fazer isso mais da primeira maneira)
Chamar a invocação de uma classe mãe
ContaCorrente() : super()
- Realizar alguma verificação com assert
Contact(this.name, this.accountNumber)
: assert( accountNumber >= 0),
assert( name.length > 0)
Aqui uma observação, que você conseguirá criar o objeto, o assert
só dará problemas em nossos testes :)
Também temos uma 4º utilidade, mas que não vejo sendo tão comum, que é redirecionar para um outro construtor, então algo como:
Conta.apenasNome(this.name) : this(name, Random().nextInt(200));
Então é basicamente isso, utilizaremos os :
para operações que devem ser realizadas antes do corpo do construtor, e as mais comuns são a inicialização de campos finais e verificação com assert
Abraços e Bons Estudos!