Flutter项目出现Null check operator空值使用错误求助
解决「Null check operator used on a null value」错误
问题根源
错误出在CalculatorBrain类的getResult和getInterpertation方法中:你用bmi!强制解包可空变量,但bmi仅在调用calculateBMI后才会被赋值。如果在调用calculateBMI之前执行这两个方法,bmi仍为null,触发空检查错误。
修复方案
重构CalculatorBrain,让BMI在实例创建时自动计算,避免依赖手动调用顺序的风险:
import 'dart:math'; class CalculatorBrain{ // 构造函数中直接计算BMI CalculatorBrain({required this.height, required this.weight}){ _bmi = weight / pow(height / 100, 2); } final int height; final int weight; // 使用late final确保变量初始化后不可变且非空 late final double _bmi; String calculateBMI(){ return _bmi.toStringAsFixed(1); } String getResult(){ if(_bmi >= 25){ return "OverWeight"; } else if(_bmi >= 18.5 && _bmi < 25){ return "Normal"; } else{ return "UnderWeight"; } } String getInterpertation(){ if(_bmi >= 25){ return "Your BMI is high, you should do more exercises"; } else if(_bmi >= 18.5 && _bmi < 25){ return "Your BMI is Normal, you don't need any adjustment"; } else{ return "Your BMI is quite low, you should eat more nutritious food"; } } }
额外说明
- 使用
late final声明_bmi,保证变量在构造函数执行完成后被初始化,且后续不可修改,彻底消除空安全问题。 - 重构后,创建
CalculatorBrain实例时就会自动计算BMI,无需手动调用calculateBMI再获取结果,避免了调用顺序错误的可能。
内容的提问来源于stack exchange,提问作者SYED ZOHAIB
相关产品推荐
相关产品推荐

