Oii Alvaro, tudo bem?
No Dart, um construtor é um método especial da classe que é chamado quando um objeto da classe é criado. Existem dois tipos principais de construtores: os padrões e os nomeados.
O construtor padrão é aquele que você já conhece e que é utilizado para inicializar os atributos da classe. No seu exemplo:
class Listin {
String id;
String name;
Listin({required this.id, required this.name});
}
Construtores nomeados permitem que você crie múltiplos construtores para uma classe, cada um com um nome diferente. No seu caso, o fromMap
é um construtor nomeado que cria uma instância da classe Listin
a partir de um Map
.
- Sintaxe do Construtor Nomeado com Inicialização de Variáveis
A sintaxe que você disse com os dois pontos (:
) é usada para inicializar os atributos da classe antes que o corpo do construtor seja executado. Isso é conhecido como lista de inicialização.
No exemplo:
class Listin {
String id;
String name;
Listin({required this.id, required this.name});
Listin.fromMap(Map<String, dynamic> map)
: id = map["id"],
name = map["name"];
}
Tá acontecendo:
- Construtor Nomeado:
Listin.fromMap(Map<String, dynamic> map)
é um construtor nomeado. - Lista de Inicialização:
: id = map["id"], name = map["name"]
é a lista de inicialização. Ela é usada para inicializar os atributos id
e name
usando os valores do Map
fornecido. - Inicialização Antes do Corpo: A lista de inicialização é executada antes do corpo do construtor. Isso significa que
id
e name
são inicializados com os valores de map
antes que qualquer outra lógica no construtor seja executada.
Espero ter te ajudado a entender melhor.
Um abraço e bons estudos.