在关闭警报框后运行功能

问题描述 投票:0回答:1

我已经阅读了无数的链接,例如this one,但无济于事。

用例非常简单,我想在警报框被关闭后运行一个功能。

void dummyFunc()  {

            sleep(Duration(seconds:3));
            print("done");

}

Future<bool> displayDialog() async {
            return showDialog<bool>(

                context: context,
                barrierDismissible: false, // user must tap button!
                builder: (BuildContext context) {
                    return AlertDialog(

                        title: Text('AlertDialog Title'),
                        content: SingleChildScrollView(
                            child: ListBody(
                                children: <Widget>[
                                    Text('This is a demo alert dialog.'),
                                    Text('Would you like to approve of this message?'),
                                ],
                            ),
                        ),
                        actions: <Widget>[
                            FlatButton(
                                child: Text('Decline'),
                                onPressed: () {
                                    Navigator.of(context).pop(false);
                                },
                            ),
                            FlatButton(
                                child: Text('Approve'),
                                onPressed: () {
                                    Navigator.of(context).pop(true);
                                },
                            ),
                        ],
                        elevation: 24.0,
                        shape:RoundedRectangleBorder(),
                    );
                },
            );
        }

var button = AnimatedOpacity(
            opacity: 1.0,
            duration: Duration(milliseconds: 500),
            child: FloatingActionButton(
                tooltip: 'Start',
                child: Icon(iconShape),
                onPressed: () async {
                    bool shouldUpdate = await displayDialog();
                    print(shouldUpdate);
                    if (shouldUpdate)
                          dummyFunc();

                })
        );

但是警报对话框将在3sd后关闭。

请让我知道我在做什么错,谢谢〜

flutter flutter-layout
1个回答
0
投票

我认为这是因为您正在使用睡眠。而不是使用Future延迟。

void dummyFunc() async {
    Future.delayed(Duration(seconds: 3));
    print("done");
  }

如果您不想延迟,那么您也可以删除此将来,此功能将在对话框关闭后执行。

© www.soinside.com 2019 - 2024. All rights reserved.