Arithmeti c Операции над текстовыми полями flutter dart - PullRequest
0 голосов
/ 18 июня 2020

Я хочу отключить скорость записи / кг для записи и присвоить ему значение, вычисляя следующим образом

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

Я не знаю, как выполнять эти операции с текстовым полем, пожалуйста, помогите ссылка

1 Ответ

1 голос
/ 18 июня 2020

Простым решением будет выполнение метода вычисления onChange для каждого TextField.

Вот пример, в котором у нас есть три TextField, и мы хотим показать сумму первых двух TextField в третьем TextField.

Вы можете отключить TextField с помощью свойства enabled или использовать 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();
    }
  }
}
...