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
相关产品推荐
相关产品推荐

