1
resposta

[Dúvida] Construtor nomeado

Olá,

Estou com dúvidas com relação a este construtor nomeado, o fromMap, do código do vídeo (print abaixo), onde não entendi a sintaxe.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Entendo que há tipos de construtor como o não nomeado que está ali, que seria:

Listin({required this.id, required this.name});

E, se eu fosse fazer um nomeado, semelhante, seria algo como:

Listin.nomeado({required this.id, required this.name});

Se alguém puder me explicar por que, após criar o construtor ainda tenho que colocar dois pontos ( : ) e as variáveis (estas até estão ok que são da classe, mas porque como funciona essa sintaxe) ?

1 resposta

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.

  • Construtor Padrão:

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});
}
  • Construtor Nomeado:

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:

  1. Construtor Nomeado: Listin.fromMap(Map<String, dynamic> map) é um construtor nomeado.
  2. 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.
  3. 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.