簡體   English   中英

如何使用 flutter 中的 TextEditingControllers 進行計算?

[英]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 按鈕時,我希望結果顯示在相鄰的文本字段中。 formulaBMI = Kilogram/(meter*meter)

我想不出任何想法或代碼。 請幫助我使用一些代碼來實現我想要的結果。

  1. 您需要再創建一個TextEditingController ,例如“bmiController”。
  2. 然后創建一個帶有按鈕的文本字段,並將 bmi 文本 controller 分配給該字段。
  3. 創建一個“計算”方法並將此方法分配給按鈕。

您的計算方法應如下所示(我沒有測試下面的代碼):

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM