[英]How to calculate with TextEditingControllers in flutter?
所以在 flutter 我有自動計算的文本字段,我想使用公式計算結果。
讓我先展示一下我在做什么:
這些是那些文本字段。
這些字段的代碼:
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)
。
我想不出任何想法或代碼。 請幫助我使用一些代碼來實現我想要的結果。
TextEditingController
,例如“bmiController”。您的計算方法應如下所示(我沒有測試下面的代碼):
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';
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.