You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter开发BMI计算器传参报错:构造函数参数不匹配如何解决

问题原因

你遇到的Found this candidate, but the arguments don't match报错是Flutter编译时识别到你调用BmiResultScreen构造函数传入的参数,和该类定义的构造函数参数不匹配导致的,结合你提供的代码,最可能的触发原因有3个:

  • 导入BmiResultScreen的文件路径大小写和实际文件不匹配,在macOS/Linux等大小写敏感的系统上会导致编译器识别到旧的类定义
  • Flutter编译缓存未更新,修改构造函数后热重载没有同步生效
  • 隐式类型转换异常,部分Flutter版本对round()返回的int类型识别存在兼容问题
可行解决方案
  1. 修正导入路径
    确保BmiScreen文件头部的导入语句和实际BmiResultScreen的文件名完全一致,比如文件名是bmi_result_screen.dart就保持现有导入,如果文件名是BmiResultScreen.dart就将导入改为import 'BmiResultScreen.dart';
  2. 清除缓存重新运行
    在项目根目录执行以下命令清理旧缓存:
flutter clean && flutter pub get

执行完成后重新运行项目即可。
3. 显式声明参数类型
将跳转页的传参代码添加显式类型转换,避免隐式转换报错:

Navigator.push(
  context,
  MaterialPageRoute(
      builder: (context) => BmiResultScreen(
        isMale: isMale,
        age: age,
        result: result.round() as int,
      ),
  )
);
额外优化点

BmiResultScreen中result已经是int类型,不需要再调用round()方法,可以直接写Result: $result减少冗余代码。

内容的提问来源于stack exchange,提问作者Diaa Nassar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:54:03