【发布时间】:2020-08-18 21:27:56
【问题描述】:
════════小部件库捕获的异常═════════════════════════════════════ ═════════════════════ 在构建 Builder(dirty) 时引发了以下 NoSuchMethodError: 在 null 上调用了方法“>=”。 接收方:空 尝试调用:>=(25)
相关的导致错误的小部件是: MaterialApp file:///C:/Users/Ahmed/AndroidStudioProjects/bmi_calc/lib/main.dart:8:12 抛出异常时,这是堆栈:
0 Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
1calculator.getresult(包:bmicalc/calculator.dart:14:14)
2 _InputPageState.build..(包:bmicalc/input_page.dart:226:97)
3 MaterialPageRoute.buildPage (package:flutter/src/material/page.dart:87:27)
4 _ModalScopeState.build。 (包:flutter/src/widgets/routes.dart:710:43)
在 #1 我的代码是
class calculator {
calculator({this.height, this.weight});
final int height;
final int weight;
double _bmi;
String calculatebmi() {
_bmi = (weight / pow(height / 100, 2));
return _bmi.toStringAsFixed(1);
}
String getresult() {
if (_bmi >= 25) {
return 'Overweight';
} else if (_bmi > 18.5) {
return 'Normal';
} else {
return 'Underweight';
}
return ' ';
}
String getRemarks() {
if (_bmi >= 25) {
return 'Your weight is more than average body weight, try to excercise.';
} else if (_bmi > 18.5) {
return 'Your weight is normal';
} else {
return 'Your weight is less than average body weight, try to eat more';
}
}
}
在#2
`GestureDetector(
onTap: () {
calculator cal = calculator(height: height, weight: weight);
Navigator.push(context, MaterialPageRoute(builder: (context) => results(result: calculator().getresult(), bmi: calculator().calculatebmi(), remarks: calculator().getRemarks())));
},)`
【问题讨论】:
-
您应该在“getresult()”之前调用“calculatebmi()”。