【问题标题】:Arithmetic Operations on Textformfields flutter dartTextformfields上的算术运算flutter dart
【发布时间】:2020-10-07 20:02:32
【问题描述】:

我想禁用 Rate/kg 进行写入,并通过这样的计算给它一个值

Rate = amount/weight +carriage/weight +unloading/weight

我不知道如何在文本字段上执行这些操作请帮助link

【问题讨论】:

标签: flutter dart textfield


【解决方案1】:

In-Text 小部件,您可以像这样使用算术运算,

Container(
child: Text(
(currentTemp + kelvin).toStringAsFixed(1),
style: TextStyle(
fontSize: 60,
color: Colors.white,
),
),
),

【讨论】:

    【解决方案2】:

    简单的解决方案是执行每个TextField 的计算方法onChange

    这是我们有三个TextField 的示例,我们希望在第三个TextField 中显示前两个TextField 的总和。

    您可以使用enabled 属性禁用TextField,也可以使用AbsorbPointer

    import 'package:flutter/material.dart';
    
    class StackOverFlow extends StatefulWidget {
      @override
      _StackOverFlowState createState() => _StackOverFlowState();
    }
    
    class _StackOverFlowState extends State<StackOverFlow> {
      TextEditingController _firstController = TextEditingController();
      TextEditingController _secondController = TextEditingController();
      TextEditingController _thirdController = TextEditingController();
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(),
          body: Container(
            child: Column(
              children: <Widget>[
                TextField(
                  controller: _firstController,
                  onChanged: (value) {
                    _calculate();
                  },
                  keyboardType: TextInputType.number,
                ),
                TextField(
                  controller: _secondController,
                  onChanged: (value) {
                    _calculate();
                  },
                  keyboardType: TextInputType.number,
                ),
                AbsorbPointer(
                  child: TextField(
                    controller: _thirdController,
                    keyboardType: TextInputType.number,
                  ),
                ),
              ],
            ),
          ),
        );
      }
    
      void _calculate() {
        if (_firstController.text.trim().isNotEmpty &&
            _secondController.text.trim().isNotEmpty) {
          final firstValue = double.parse(_firstController.text);
          final secondValue = double.parse(_secondController.text);
          _thirdController.text = (firstValue + secondValue).toString();
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-31
      • 2019-03-04
      • 2016-06-16
      • 2016-03-10
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      相关资源
      最近更新 更多