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

Null safety

Na aula, o professor utiliza o Dart v2.4 e eu estou utilizando a versão 2.8.1 no momento.

Copiando o código do professor, acabo esbarrando em erros que não ocorreram durante a aula e imagino que seja em razão do Null safety.

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

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

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeComo eu contorno esses erros?

Tentei utilizando a ferramenta 'Quick Fix' do VSCode, mas não adiantou :(

6 respostas

Para iniciar variáveis sem valores adicione late. Exemplo: late String nome;, late String cpf;.

contaDaAmanda.titular recebe uma String, por exemplo, contaDaAmanda.titular = amanda.nome;. Mas você está passando um objeto, nesse caso um objeto da classe Cliente, amanda .

Boa noite, Leonardo!

Obrigado pelo auxílio, mas não entendi direito a parte do contaDaAmanda.titular. Aqui pra mim continua dando erro.

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

Tentei adicionar o amanda.nome mas acho que estou fazendo da forma incorreta.

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

Matheus, na linha 10, 13 , 14 e 15.

Está com erro porque na Classe ContaCorrente o atributo titular passou de String String titular; para Objeto Cliente titular;

Não consegui ver sua Classe ContaCorrente mas provavelmente é isso, fique a vontade para responder essa mensagem caso ainda continue com o erro.

Segue código inteiro.

void main() {
  ContaCorrente contaDaAmanda = ContaCorrente();
  ContaCorrente contaDoTiago = ContaCorrente();

  Cliente amanda = Cliente();
  amanda.nome = "Amanda";
  amanda.cpf = "123.456.789-00";
  amanda.profissao = "Programadora Dart";

  contaDaAmanda.titular = amanda;



  print("Titular: ${contaDaAmanda.titular.amanda.nome}");
  print("CPF: ${contaDaAmanda.titular.amanda.cpf}");
  print("Profissão: ${contaDaAmanda.titular.amanda.profissao}");
}

class Cliente {
  late String nome;
  late String cpf;
  late String profissao;
}

//class tem que estar sempre fora de outra função
class ContaCorrente {
  late String titular;
  late int agencia;
  late int conta;
  double saldo = 20.0;
  double chequeEspecial = -100.0;

  bool verificaSaldo(double valor) {
    if (this.saldo - valor < chequeEspecial) {
      print("Sem saldo suficiente.");
      return false;
    } else {
      print("Movimentando $valor reais.");
      return true;
    }
  }

  bool transferencia(double valorDeTransferencia, ContaCorrente contaDestino) {
    if (!verificaSaldo(valorDeTransferencia)) {
      return false;
    } else {
      this.saldo -= valorDeTransferencia;
      contaDestino.deposito(valorDeTransferencia);
      return true;
    }
  }

  bool saque(double valorDoSaque) {
    if (!verificaSaldo(valorDoSaque)) {
      return false;
    } else {
      this.saldo -= valorDoSaque;
      return true;
    }
  }

  double deposito(double valorDoDeposito) {
    this.saldo += valorDoDeposito;
    return this.saldo;
  }
}

Ainda não consegui fazer funcionar kkk

solução!

Matheus, fiz as alterações necessárias no seu código e deixei comentários nessas linhas pra você analisar. Linhas 14, 15, 16 e 30.

void main(List<String> arguments) {
  ContaCorrente contaDaAmanda = ContaCorrente();
  ContaCorrente contaDoTiago = ContaCorrente();

  Cliente amanda = Cliente();
  amanda.nome = "Amanda";
  amanda.cpf = "123.456.789-00";
  amanda.profissao = "Programadora Dart";

  contaDaAmanda.titular = amanda;

  //  ****** O Objeto 'amanda' está dentro de contaDaAmanda.titular, não existe nada com 'contaDaAmanda.titular.amanda'. ******

  print("Titular: ${contaDaAmanda.titular.nome}");
  print("CPF: ${contaDaAmanda.titular.cpf}");
  print("Profissão: ${contaDaAmanda.titular.profissao}");
}

class Cliente {
  late String nome;
  late String cpf;
  late String profissao;
}

//class tem que estar sempre fora de outra função
class ContaCorrente {

  // ************************* Alterar String para Cliente  *************************

  late Cliente titular;
  late int agencia;
  late int conta;
  double saldo = 20.0;
  double chequeEspecial = -100.0;

  bool verificaSaldo(double valor) {
    if (this.saldo - valor < chequeEspecial) {
      print("Sem saldo suficiente.");
      return false;
    } else {
      print("Movimentando $valor reais.");
      return true;
    }
  }

  bool transferencia(double valorDeTransferencia, ContaCorrente contaDestino) {
    if (!verificaSaldo(valorDeTransferencia)) {
      return false;
    } else {
      this.saldo -= valorDeTransferencia;
      contaDestino.deposito(valorDeTransferencia);
      return true;
    }
  }

  bool saque(double valorDoSaque) {
    if (!verificaSaldo(valorDoSaque)) {
      return false;
    } else {
      this.saldo -= valorDoSaque;
      return true;
    }
  }

  double deposito(double valorDoDeposito) {
    this.saldo += valorDoDeposito;
    return this.saldo;
  }
}

Localizei o erro.

Obrigado pela ajuda!!