1
resposta

[Dúvida] Duvidas de como funciona o Maps

Olá, tenho algumas duvidas.

Não entendi muito bem como funciona o toMap, poderiam me ajudar?

Eu olhei na Opnião do instrutor e tem essa forma aqui

resultado["nome"] = this.nome;
resultado["idade"] = this.idade;
resultado["estaAutenticada"] = this.estaAutenticada;

Por que se repete o this. novamente?

desde já agradeço!

1 resposta

Olá, Álvaro! Tudo bem?

Primeiramente, peço desculpas pela demora em dar um retorno.

Muito legal sua observação! Usamos o this quando queremos informar ao nosso código que estamos referenciando uma variável/atributo da própria classe.

Imagine que no exemplo dessa mesma tarefa nós recebemos uma variável chamada nome na nossa função toMap mas estamos usando this.nome:

  Map<String, dynamic> toMap(String nome) {
    Map<String, dynamic> resultado = {};
    resultado["nome"] = this.nome;
    resultado["idade"] = idade;
    resultado["estaAutenticada"] = estaAutenticada;
    return resultado;
  }

Nessa situação, passamos a variável nome mas ela não está sendo usada no nosso toMap, pois *estamos usando o this.nome, referenciando a variável da própria classe. *

E se usássemos apenas nome nesse exemplo?

  Map<String, dynamic> toMap(String nome) {
    Map<String, dynamic> resultado = {};
    resultado["nome"] = nome;
    resultado["idade"] = idade;
    resultado["estaAutenticada"] = estaAutenticada;
    return resultado;
  }

Nessa situação, o valor utilizado seria o passado por parâmetro (que possui mesma identificação), não o da classe, então esse valor é que seria utilizado dentro de toMap.

Abaixo cada caso exemplificado:

void main() {
  Pessoa pessoa = Pessoa("Ramon", 27, true);
  print(pessoa.toMap("teste"));
}
  • A saída desse exemplo usando o this.nome seria:

{nome: Ramon, idade: 27, estaAutenticada: true}

  • E usando apenas nome seria:

{nome: teste, idade: 27, estaAutenticada: true}.

Concluindo, nesse exemplo que você mandou, especificamente, não seria tão necessário usar o this, inclusive o flutter dá um aviso sobre isso (Don't access members withthisunless avoiding shadowing.), mas em outros casos é importante se atentar a isso.

Espero ter te ajudado. Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado. ✓