【发布时间】:2020-10-07 20:02:32
【问题描述】:
我想禁用 Rate/kg 进行写入,并通过这样的计算给它一个值
Rate = amount/weight +carriage/weight +unloading/weight
我不知道如何在文本字段上执行这些操作请帮助link
【问题讨论】:
我想禁用 Rate/kg 进行写入,并通过这样的计算给它一个值
Rate = amount/weight +carriage/weight +unloading/weight
我不知道如何在文本字段上执行这些操作请帮助link
【问题讨论】:
In-Text 小部件,您可以像这样使用算术运算,
Container(
child: Text(
(currentTemp + kelvin).toStringAsFixed(1),
style: TextStyle(
fontSize: 60,
color: Colors.white,
),
),
),
【讨论】:
简单的解决方案是执行每个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();
}
}
}
【讨论】: