NoSuchMethodError,小部件库捕获的异常

Posted

技术标签:

【中文标题】NoSuchMethodError,小部件库捕获的异常【英文标题】:NoSuchMethodError, Exception caught by widgets library 【发布时间】: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()”。 【参考方案1】:

出现问题是因为值 _bmi 为空。这是因为你没有调用calculatebmi()。

您正在使用calculator() 的空参数计算BMI。所以,而不是设置

bmi:calculator().getresult();

用作:

bmi : cal.getresult();         // You already have insteance of calculator (cal)

【讨论】:

是的,它确实对我有帮助,而且我必须先更改结果函数中的参数,然后我放置了 cal.calculatebmi() 然后我添加了 cal.getresult();非常感谢

以上是关于NoSuchMethodError,小部件库捕获的异常的主要内容,如果未能解决你的问题,请参考以下文章

小部件库捕获的异常

小部件库捕获的异常,在颤振中抛出以下断言构建答案**错误**

如何在颤振小部件测试中捕获来自未来的错误?

使用 PyQt4 或 PySide 捕获屏幕,除了特定的小部件?

如何将捕获的输入从 tkinter 条目小部件写入 json 文件

在主屏幕小部件的列表视图上方添加一个按钮 - 如何捕获单击此按钮?