当用户输入第一个TextFormField时,我试图更改第二个TextFormField的值。
TextEditingController txt1 = TextEditingController();
TextEditingController txt2 = TextEditingController();
new Container(
child: new TextFormField(
controller: txt1,
autovalidate: true,
keyboardType: TextInputType.number,
validator: (value){
if(value.isEmpty){
txt2.text = "0";
return 'Please enter value';
}else{
txt2.text = ((10/100)*value).toString();
}
},
)
),
new Container(
child: new TextFormField(
controller: txt2,
enabled: false
)
),它工作正常。但在运行控制台中,我看到以下错误消息
“生成期间调用的setState()或markNeedsBuild()”
发布于 2019-07-22 06:45:29
建议的方法是使用listener --但是代码中的另一种简短的方式是使用未来。
您所拥有的工作代码:
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Expanded(
child: new TextFormField(
controller: txt1,
autovalidate: true,
keyboardType: TextInputType.number,
validator: (value) {
if (value.isEmpty) {
Future.value(Duration(seconds: 1)).whenComplete(() { // Add this
txt2.text = "0";
});
return 'Please enter value';
} else {
Future.value(Duration(seconds: 1)).whenComplete(() { //Add this
txt2.text = ((10 / 100) * int.parse(value)).toString();
});
return null;
}
},
)),
Expanded(child: TextFormField(controller: txt2, enabled: false)),
],
),https://stackoverflow.com/questions/57139630
复制相似问题