es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El campo de instancia no nulo ‘ _bmi ‘ debe ser inicializado en Flutter.

Tengo un error con mi código de dart, intenté usar “?” pero aún no funciona.

Estoy viendo este mensaje de error “Campo de instancia no anulable ‘_bmi’ debe ser inicializado en Flutter”

import 'dart:math';

class CalculatorBrain {
  final height;
  final weight;
  double _bmi;
  CalculatorBrain({
    this.height,
    this.weight,
  });
  String calculateBMI() {
    _bmi = weight / pow(height / 100, 2);
    return _bmi.toStringAsFixed(1);
  }

  String getResult() {
    if (_bmi >= 25) {
      return 'sobrepeso';
    } else if (_bmi > 18.5) {
      return 'Normal';
    } else {
      return 'bajo peso';
    }
  }

  String interpretation() {
    if (_bmi >= 25) {
      return 'tienes un peso corporal más alto de lo normal. intenta hacer más ejercicio';
    } else if (_bmi > 18.5) {
      return 'tienes un peso corporal normal';
    } else {
      return 'tienes un peso corporal normal, puedes comer un poco más';
    }
  }
}

¿Cómo puedo solucionar esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que el campo de instancia no nulo, _bmi, debe ser inicializado. Para solucionar esto, puedes inicializar _bmi con un valor predeterminado al declararlo o usar la palabra clave late para convertirlo en una variable no nula que se inicialice más adelante. Aquí tienes un ejemplo de cómo usar la palabra clave late:

    import 'dart:math';
    
    class CalculatorBrain {
      final height;
      final weight;
      late double _bmi;
    
      CalculatorBrain({
        this.height,
        this.weight,
      });
    
      String calculateBMI() {
        _bmi = weight / pow(height / 100, 2);
        return _bmi.toStringAsFixed(1);
      }
    
      String getResult() {
        if (_bmi >= 25) {
          return 'sobrepeso';
        } else if (_bmi > 18.5) {
          return 'Normal';
        } else {
          return 'bajo peso';
        }
      }
    
      String interpretation() {
        if (_bmi >= 25) {
          return 'tienes un peso corporal superior al normal. Intenta hacer más ejercicio';
        } else if (_bmi > 18.5) {
          return 'tienes un peso corporal normal';
        } else {
          return 'tienes un peso corporal normal, puedes comer un poco más';
        }
      }
    }
    

    La palabra clave late le indica a Dart que la variable _bmi se inicializará más adelante en el flujo del programa. De esta manera, evitamos tener que inicializar _bmi inmediatamente y se evita el error.

Comments are closed.