在 Flutter 中显示几秒钟后没有执行操作按钮时关闭 AlertDialog

2024-03-20

我有一个 AlertDialog 弹出几秒钟,然后自动弹出,没有执行任何操作按钮。弹出后,会显示另一个AlertDialog。

我怎样才能做到这一点?

这是我的示例代码:

初始化计时器以显示第一个对话框:

_timerToShowFirstDialog() async {
  var duration = const Duration(seconds: 1);
  return Timer(duration, () {
    _showFirstDialog();
 });
}

第一个对话:

_showFirstDialog(){
 return showDialog<String>(
 context: context,
 barrierDismissible: false,
 builder: (BuildContext context) {
   return AlertDialog(
     title: Text('Show Dialog 1'),
     content: Text('Wait a sec'),
   );
  });
}

第二次对话:

_showSecondDialog(){
 return showDialog<String>(
 context: context,
 barrierDismissible: false,
 builder: (BuildContext context) {
   return AlertDialog(
     title: Text('Show Dialog 2'),
     content: Text('After the first dialog popped up for several seconds, shows this dialog without any action buttons'),
   );
  });
}

我正在考虑在第一个对话框中使用 setState 来调用/返回第二个对话框。但是,我不知道将代码放在哪里。

我很感激任何答案


尝试下面的代码希望对您有帮助。只需先点击按钮,然后警报打开,第一个警报关闭5 sec然后打开第二次警报

refer Future.delayed() here https://api.flutter.dev/flutter/dart-async/Future/Future.delayed.html

 TextButton(
  onPressed: () => showDialog(
      context: context,
      builder: (BuildContext context) {
        Future.delayed(Duration(seconds: 5), () {
          Navigator.of(context).pop(true);
        });
        return AlertDialog(
          title: const Text('AlertDialog Title'),
          content: const Text('AlertDialog description'),
        );
      }).then((value) {
    showDialog(
      // Second dialog open
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          content: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Center(child: Text('Welcome')),
              Text('Second Dialog')
            ],
          ),
          actions: <Widget>[
            TextButton(
              onPressed: () => Navigator.pop(context, 'Cancel'),
              child: const Text('Cancel'),
            ),
            TextButton(
              onPressed: () => Navigator.pop(context, 'OK'),
              child: const Text('OK'),
            ),
          ],
        );
      },
    );
  }),
  child: const Text('Show Dialog'),
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Flutter 中显示几秒钟后没有执行操作按钮时关闭 AlertDialog 的相关文章

随机推荐