Flutter 当我们在Flatter中更改其他文本字段时,如何自动更改标签值?
我已使用TextEditingController获取文本字段中的更改。 使用相同的方法,我创建了一个提交按钮,当用户单击提交按钮时,它将计算值并在最后更新标签 下面是代码Flutter 当我们在Flatter中更改其他文本字段时,如何自动更改标签值?,flutter,dart,material-ui,widget,Flutter,Dart,Material Ui,Widget,我已使用TextEditingController获取文本字段中的更改。 使用相同的方法,我创建了一个提交按钮,当用户单击提交按钮时,它将计算值并在最后更新标签 下面是代码 //main.dart import 'package:flutter/material.dart'; import 'package:english_words/english_words.dart'; void main() => runApp(MyApp()); class MyApp extends Sta
//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;
}
}
//main.dart
进口“包装:颤振/材料.省道”;
导入“package:english_words/english_words.dart”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“欢迎!!”,
家:脚手架(
appBar:appBar(标题:文本('scaffold appBar')),
正文:中(
child:CoinDetails(),
),
),
);
}
}
类CoinDetails扩展了StatefulWidget{
@凌驾
_CoinDetailsState createState()=>\u CoinDetailsState();
}
类_CoinDetailsState扩展状态{
TextEditingController coinController=TextEditingController();//替换按钮的一次更改事件处理
TextEditingController价格控制器=TextEditingController();
TextEditingController amountController=TextEditingController();
双倍价格=0;
双倍金额=0;
双倍佣金=0;
双重_总成本=0;
@凌驾
小部件构建(构建上下文){
TextStyle TextStyle=Theme.of(context).textTheme.title;
返回容器(
填充:所有边缘设置(15.0),
子:列(
儿童:[
文本字段(
控制器:控制器,
装饰:输入装饰(
标签文字:“硬币”,
hintText:“例如BTT”,
标签样式:文本样式,
边框:大纲输入边框(
边界半径:边界半径。圆形(5.0)
),
),
键盘类型:TextInputType.text,
/*onChanged:(字符串){
设置状态(){
名称=字符串;
});
},*/
),
文本字段(
控制器:价格控制器,
装饰:输入装饰(
标签文字:“价格”,
hintText:“例如BTT”,
标签样式:文本样式,
边框:大纲输入边框(
边界半径:边界半径。圆形(5.0)
),
),
键盘类型:TextInputType.text,
/*onChanged:(字符串){
设置状态(){
名称=字符串;
});
},*/
),
文本字段(
控制器:数量控制器,
装饰:输入装饰(
labelText:'金额',
hintText:“例如BTT购买投资额”,
标签样式:文本样式,
边框:大纲输入边框(
边界半径:边界半径。圆形(5.0)
),
),
键盘类型:TextInputType.text,
/*onChanged:(字符串){
设置状态(){
名称=字符串;
});
},*/
),
升起的按钮(
颜色:主题。背景。原色深,
textColor:Theme.of(context).primaryColorLight,
子项:Text('Submit',textScaleFactor:1.5),
已按下:(){
设置状态(){
_计算();
});
}),
文本(“佣金:”+_佣金.toString()+“总成本:”+_总成本.toString()),
],
),
);
}
字符串_calculate(){
_price=double.parse(priceController.text);
_amount=double.parse(amountController.text);
_佣金=_金额*0.002;
_总成本=_金额+_佣金;
}
}
我想删除此提交按钮,并在用户更改价格或金额文本字段或两者时自动更新值
请指导我如何设置。您可以使用
TextField
小部件的onChanged
回调。每当TextField
的值更改时,它都会触发
类MyHomePage扩展StatefulWidget{
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
字符串名=“”;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“您的名字是:$name”),
),
正文:中(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
TextFormField(
onChanged:(字符串值){
///该值是文本字段的值。
///您可以在此处执行计算:
设置状态(()=>name=value);
},
装饰:输入装饰(
labelText:'名称',hintText:'请输入您的姓名',
),
],
),
),
);
}
}
此外,精度显示为700错误,70和7000正确。
你能检查一下吗
很抱歉,我错误地在您的答案中添加了“和”,而不是“问题”,因此不允许我再次更新。你能检查一下我现在添加的细节吗。此外,精度显示为700错误,70和7000正确。你能检查一下吗。