Flutter 如何在一个按钮上插入两个操作,然后按delete小部件,并通过new创建它?

Flutter 如何在一个按钮上插入两个操作,然后按delete小部件,并通过new创建它?,flutter,textedit,flutter-web,Flutter,Textedit,Flutter Web,在我试图展示的图片上: 1-1-外观如何错误 2-2-我是如何解决的 但它只能同时按下两个按钮(先是删除,然后是随机) 最好只做一件事,但我还没有做 我试图插入代码来删除小部件,并通过一个按钮操作创建它。但它不起作用。 我不明白为什么以及如何让它工作 代码: @覆盖 小部件构建(构建上下文){ 返回脚手架( appBar:appBar( 标题:文本(widget.title), ), 正文:中( 子:列( mainAxisAlignment:mainAxisAlignment.cent

在我试图展示的图片上:

  • 1-1-外观如何错误

  • 2-2-我是如何解决的

    但它只能同时按下两个按钮(先是删除,然后是随机)

最好只做一件事,但我还没有做

我试图插入代码来删除小部件,并通过一个按钮操作创建它。但它不起作用。 我不明白为什么以及如何让它工作

代码:

@覆盖
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:中(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
textWidget,
扁平按钮(
子项:文本(“随机”),
已按下:(){
设置状态(){
textWidget=Container();
textWidget=Form(
键:_textKey,
子项:TextFormField(
控制器:myTextController,
));
});
myTextController.text=rnd.nextInt(100000000).toString();
}),
扁平按钮(
子项:文本(“删除”),
已按下:(){
设置状态(){
textWidget=Container();
});
}),
],
),
),
);

之所以发生这种情况,是因为您在状态中设置了一个新值,然后在其中设置了另一个值,然后才进行更新。这是按预期进行的

但是,如果要先删除该项,然后再创建一个新项,则可以按如下方式延迟第二个操作:

            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();
              });
            },
 @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();
                  });
                }),
          ],
        ),
      ),
    );
            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();
              });
            },