Flutter墙面涂料用量计算出现空对象赋值错误
问题分析
报错信息:
The setter 'value=' was called on null.
Receiver: null
Tried calling: value=3000.0
直接点出问题:你只声明了var area;但未初始化,它的默认值是null,当执行area.value = (height * length);时,试图给null的value属性赋值,触发了这个错误。
另外你的判断逻辑也有问题:if (WallheightController.text.isNotEmpty || WalllengthController.text.isNotEmpty )用了逻辑或(||),这意味着只要一个输入框有内容就会进入计算,但此时另一个输入框为空,double.parse会抛出格式错误,应该改成逻辑与(&&)确保两个输入都不为空。
修复方案
- 将
area初始化为RxDouble类型,和paint、result保持一致:
RxDouble area = 0.0.obs;
- 修改判断条件为逻辑与:
if (WallheightController.text.isNotEmpty && WalllengthController.text.isNotEmpty )
修复后的完整代码
final WallheightController = TextEditingController(); final WalllengthController = TextEditingController(); var height; var length; RxDouble area = 0.0.obs; RxDouble paint = 0.2.obs; RxDouble result = 0.0.obs; calculatepaint() { if (WallheightController.text.isNotEmpty && WalllengthController.text.isNotEmpty ) { height = double.parse(WallheightController.text); length = double.parse(WalllengthController.text); area.value = (height * length); result.value = area.value * paint.value; Get.toNamed(RoutesClass.prcalculation); } else { Get.snackbar("Fields empty", "Fill Required fields"); } } clear() { WallheightController.clear(); WalllengthController.clear(); }
内容的提问来源于stack exchange,提问作者Huzaifa Arshad
相关产品推荐
相关产品推荐

