Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 当我们在Flatter中更改其他文本字段时,如何自动更改标签值?_Flutter_Dart_Material Ui_Widget - Fatal编程技术网

Flutter 当我们在Flatter中更改其他文本字段时,如何自动更改标签值?

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

我已使用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;
  }
}
//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正确。你能检查一下吗。