1
resposta

ismadura em citricas

se eu quisesse que o isMadura aparecese no construtor do Citricas, como ficaria? esta dando erro

1 resposta

Bom dia!

O bool isMadura por estar com o ? lá em fruta pode ser nulo, e está com o null safety, portanto para adicioná-lo ao construtor precisamos fazer isso de forma que ele seja algo opcional, não sei se estou exatamente certo pois acebei de finalizar esse curso e ao tentar utilizar o isMadura de fruta sempre obtive erro então para utiliza-lo eu o coloquei dentro da classe Citricas com null safety e o coloquei no construtor como nomeado opcional

class Citricas extends Fruta {
  double nivelAzedo;
  bool? isMadura;
  Citricas(String nome, double peso, String cor, String sabor,
      int diasDesdeColheita, this.nivelAzedo, {this.isMadura})
      : super(nome, peso, cor, sabor, diasDesdeColheita);
  printFrutas(){
    print("Este(a) $nome pesa $peso g e é $cor e está maduro? $isMadura.");
  }
  existeRefri(bool existe) {
    if (existe) {
      print("Existe refrigerante de $nome");
    } else {
      print("Não existe refrigerante de $nome");
    }
  }
}

Para testar eu criei o método printFrutas para retornar o isMadura no final e verificar se está funcionando certinho, para testar minha inserção de dados ficou assim:

Citricas limao1 = Citricas('Limão', 100, 'Verde', 'Azedo', 5, 9, isMadura: true); 
//Lembrando, como ele é um nomeado opcional ele pode ficar fora de posição

Imagem demonstrando uma mensagem printada no console de fundo preto com letras brancas dizendo "Este(a) Limão pesa 100.0 g e é Verde e está maduro? true."

Para usar ele do Frutas ele teria que ser nomeado no super, ao adicioná-lo ficaria :

Citricas(String nome, double peso, String cor, String sabor,
      int diasDesdeColheita, this.nivelAzedo, {bool isMadura})
      : super(nome, peso, cor, sabor, diasDesdeColheita, isMadura: diasDesdeColheita>=10 ););

Não necessariamente precisa ser uma comparação, podemos colocar ali dentro alguma função que traga esse valor ao bool pois se não irá retornar null ou apenas um true ou false.

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeComo 5 é menor que 10 então retornou em false. Estas foram as duas maneiras que encontrei de realizar isso, peço desculpas se ficou um pouco confuso, ainda estou assimilando todo esse conteúdo que acabei de ver ^^.