【发布时间】:2021-05-04 04:41:01
【问题描述】:
我使用 TextEditingController 来获取文本字段中的更改。 使用相同的我创建了一个提交按钮,当用户单击提交按钮时,它将计算值并在最后更新标签。
下面是代码。
//main.dart
import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Welcome!!',
home: Scaffold(
appBar: AppBar(title: Text('scaffold appbar')),
body: Center(
child: CoinDetails(),
),
),
);
}
}
class CoinDetails extends StatefulWidget {
@override
_CoinDetailsState createState() => _CoinDetailsState();
}
class _CoinDetailsState extends State<CoinDetails> {
TextEditingController coinController = TextEditingController();//replacement for onChanged event handling of a button
TextEditingController priceController = TextEditingController();
TextEditingController amountController = TextEditingController();
double _price=0;
double _amount=0;
double _commission=0;
double _totalCost=0;
@override
Widget build(BuildContext context) {
TextStyle textStyle = Theme.of(context).textTheme.title;
return Container(
padding: EdgeInsets.all(15.0),
child:Column(
children: <Widget>[
TextField(
controller: coinController,
decoration: InputDecoration(
labelText: 'Coin',
hintText: "e.g. BTT",
labelStyle: textStyle,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(5.0)
),
),
keyboardType: TextInputType.text,
/*onChanged: (String string){
setState(() {
name = string;
});
},*/
),
TextField(
controller: priceController,
decoration: InputDecoration(
labelText: 'Price',
hintText: "e.g. BTT",
labelStyle: textStyle,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(5.0)
),
),
keyboardType: TextInputType.text,
/*onChanged: (String string){
setState(() {
name = string;
});
},*/
),
TextField(
controller: amountController,
decoration: InputDecoration(
labelText: 'Amount',
hintText: "e.g. BTT purchase amount invested",
labelStyle: textStyle,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(5.0)
),
),
keyboardType: TextInputType.text,
/*onChanged: (String string){
setState(() {
name = string;
});
},*/
),
RaisedButton(
color: Theme.of(context).primaryColorDark,
textColor: Theme.of(context).primaryColorLight,
child: Text('Submit',textScaleFactor: 1.5),
onPressed: (){
setState(() {
_calculate();
});
}),
Text("Commission: "+_commission.toString()+" Total Cost: "+_totalCost.toString()),
],
),
);
}
String _calculate(){
_price = double.parse(priceController.text);
_amount = double.parse(amountController.text);
_commission = _amount * 0.002;
_totalCost = _amount + _commission;
}
}
我想删除此提交按钮并在用户更改价格或金额文本字段或两者时自动更新值。
请指导我如何设置。
【问题讨论】:
标签: flutter dart material-ui widget