所以在顫振中,我有自動計算的文本欄位,我想使用公式計算結果。
讓我先展示一下我在做什么:

這些是那些文本欄位。
這些欄位的代碼:
enum UnitType {
meter,
centimeter,
feet,
kilogram,
gram,
}
class Units extends StatefulWidget {
const Units({Key? key}) : super(key: key);
@override
State<Units> createState() => _UnitsState();
}
class _UnitsState extends State<Units> {
final TextEditingController _feetController = TextEditingController();
final TextEditingController _centimeterController = TextEditingController();
final TextEditingController _meterController = TextEditingController();
final TextEditingController _kilogramController = TextEditingController();
final TextEditingController _gramController = TextEditingController();
void _convertUnit(UnitType type) {
double? ft = double.tryParse(_feetController.value.text) ?? 0;
double? cm = double.tryParse(_centimeterController.value.text) ?? 0;
double? m = double.tryParse(_meterController.value.text) ?? 0;
double? kg = double.tryParse(_kilogramController.value.text) ?? 0;
double? g = double.tryParse(_gramController.value.text) ?? 0;
switch (type) {
case UnitType.feet:
_meterController.text = (ft / 3.281).toStringAsFixed(2);
_centimeterController.text = (ft * 30.48).toStringAsFixed(2);
break;
case UnitType.meter:
_centimeterController.text = (m * 100).toStringAsFixed(2);
_feetController.text = (m * 3.281).toStringAsFixed(2);
break;
case UnitType.centimeter:
_meterController.text = (cm / 100).toStringAsFixed(2);
_feetController.text = (cm / 30.48).toStringAsFixed(2);
break;
case UnitType.kilogram:
_gramController.text = (kg * 1000).toStringAsFixed(2);
break;
case UnitType.gram:
_kilogramController.text = (g / 1000).toStringAsFixed(2);
break;
}
}
BMI(身體質量指數)的公式是Kg/m^2

現在,當我單擊BMI 按鈕時,我希望結果顯示在相鄰的文本欄位中。該formula是BMI = Kilogram/(meter*meter)。
我想不出任何想法或代碼。請幫我寫一些代碼來達到我想要的結果。
uj5u.com熱心網友回復:
- 您需要再創建一個
TextEditingController,例如“bmiController”。 - 然后創建一個帶有按鈕的文本欄位,并將 bmi 文本控制器分配給該欄位。
- 創建一個方法“計算”并將此方法分配給按鈕。
你的計算方法應該看起來像(我沒有測驗下面的代碼):
void calculate() {
try {
final kgValue = double.tryParse(_kilogramController.text);
final meterValue = double.tryParse(_meterController.text);
final bmiValue = kgValue / meterValue.pow(2);
bmiController.text = bmiValue.toString();
} catch (e) {
// This is an example, you need to handle possible null exception anyway
bmiController.text = 'Error';
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/378821.html
上一篇:vscode在固定位置打開“JuliaPlots”編輯器
下一篇:將實體傳遞給庫函式時出錯
