在我试图显示的图片上:
2-2-我如何解决它。
但是只能通过同时按下两个按钮(首先是DELETE,然后是RANDOM)来工作
最好只做一个动作,但我还没有做。
,我试图插入代码以删除小部件并通过一键式操作由新创建它。但是它不起作用。 我不明白为什么以及如何使它起作用?
代码:https://github.com/develop86229/editTextControl
FlatButton(
child: Text("RANDOM"),
onPressed: () {
setState(() {
textWidget = Container();
textWidget = Form(
key: _textKey,
child: TextFormField(
controller: myTextController,
));
myTextController.text = rnd.nextInt(1000000000).toString();
});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
textWidget,
FlatButton(
child: Text("RANDOM"),
onPressed: () {
setState(() {
textWidget = Container();
textWidget = Form(
key: _textKey,
child: TextFormField(
controller: myTextController,
));
});
myTextController.text = rnd.nextInt(1000000000).toString();
}),
FlatButton(
child: Text("DELETE"),
onPressed: () {
setState(() {
textWidget = Container();
});
}),
],
),
),
);
答案 0 :(得分:1)
发生这种情况是因为您在状态中设置了一个新值,然后在其中设置了另一个值,然后才进行更新。一切正常。
但是,如果要先删除项目然后再创建一个新项目,则可以像这样延迟第二个操作:
onPressed: () {
setState(() {
textWidget = Container();
});
Future.delayed(const Duration(milliseconds: 500), () {
setState(() {
textWidget = Form(
key: _textKey,
child: TextFormField(
controller: myTextController,
));
});
myTextController.text = rnd.nextInt(1000000000).toString();
});
},