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

Flutter中如何正确存储函数返回值?变量未更新问题求助

Dart函数参数传递问题:无法通过参数更新外部变量的原因及解决方法

问题根源

Dart中double这类基本数据类型是值传递,当你把finalLength传入dropDownIf函数时,函数内部的finalVal只是原变量的一个副本。你在函数里修改这个副本的值,只会改变副本本身,不会影响外部的finalLength变量——这就是为什么外部打印还是0的原因。

解决方法

你的函数已经正确返回了计算后的结果,只需要在调用时接收这个返回值并赋值给finalLength就行:

// 调用时接收返回值,更新外部变量
finalLength = dropDownIf(dropDownValueL, finalLength, lengthParsed);

优化建议

其实你的函数里finalVal参数完全没必要存在,因为你根本没用到它的初始值,直接根据dropDownVal和valParsed计算后返回即可,代码更简洁:

double dropDownIf(String dropDownVal, double valParsed) {
  double finalVal;
  if(dropDownVal == 'm'){
    finalVal = valParsed;
  } else if(dropDownVal == 'cm'){
    finalVal = valParsed / 100;
  } else if(dropDownVal == 'mm'){
    finalVal = valParsed / 1000;
  } else {
    // 增加默认分支,避免返回null
    finalVal = 0;
  }
  print('here is the updated value $finalVal');
  return finalVal;
}

// 调用时直接赋值
finalLength = dropDownIf(dropDownValueL, lengthParsed);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:20:35