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

[Dúvida] Conceito do Receiver

Olá, eu assisti e reassisti às videoaulas e até agora estou sem entender o que exatamente é o "receiver", como ele funciona? Por quê que ele consegue dar acesso ao "this"? Não sei se foi falta de atenção minha, mas alguém pode explicar?

2 respostas
solução!

Olá, Juan!

Entendo sua dúvida em relação ao "receiver" e como ele funciona em Dart. Vamos explicar o conceito de "receiver" e como ele possibilita o acesso ao "this" de uma forma mais clara.

Em Dart, o termo "receiver" se refere ao objeto no qual um método ou propriedade está sendo chamado. Quando você chama um método em um objeto, esse objeto se torna o "receiver" do método. Essa ideia é fundamental para a orientação a objetos e permite que métodos acessem as propriedades e comportamentos do próprio objeto.

Aqui está um exemplo simples para ilustrar o conceito:

class Pessoa {
  String nome;
  int idade;

  Pessoa(this.nome, this.idade);

  void saudacao() {
    print("Olá, meu nome é $nome e tenho $idade anos.");
  }
}

void main() {
  Pessoa pessoa1 = Pessoa("João", 30);
  Pessoa pessoa2 = Pessoa("Maria", 25);

  pessoa1.saudacao(); // "Olá, meu nome é João e tenho 30 anos."
  pessoa2.saudacao(); // "Olá, meu nome é Maria e tenho 25 anos."
}

Neste exemplo, a classe Pessoa possui um método saudacao() que imprime uma mensagem com o nome e a idade da pessoa. Quando chamamos o método saudacao() para pessoa1 e pessoa2, cada objeto se torna o "receiver" do método, permitindo o acesso às suas próprias propriedades nome e idade.

Agora, sobre o acesso ao "this", em Dart, a palavra-chave this é usada para se referir ao objeto atual em que o código está sendo executado. Ela é especialmente útil em situações em que pode haver ambiguidade entre variáveis de classe e parâmetros de método com o mesmo nome.

Por exemplo:

class Exemplo {
  int valor;

  Exemplo(this.valor);

  void exibirValor(int valor) {
    print("Valor do objeto: ${this.valor}");
    print("Valor do parâmetro: $valor");
  }
}

void main() {
  Exemplo obj = Exemplo(10);
  obj.exibirValor(5);
}

Neste exemplo, a classe Exemplo tem um construtor que recebe um parâmetro chamado valor. No método exibirValor(), temos o mesmo nome valor para um parâmetro do método. Para diferenciar o parâmetro do método da propriedade da classe, usamos this.valor para se referir à propriedade do objeto atual.

Espero que isso tenha ajudado a esclarecer o conceito de "receiver" e como ele permite o acesso ao "this" em Dart. Se tiver mais perguntas ou precisar de mais exemplos, não hesite em perguntar! Estou aqui para ajudar.

Eu havia perguntado isso me referindo ao Kotlin, não Dart, mas consegui entender igual, obrigado