如何检查警报对话框仅打开一次,而不是在flutter中onTap后打开多个新对话框

nnsrf1az  于 2022-11-25  发布在  Flutter
关注(0)|答案(1)|浏览(174)

我正在使用flutter应用程序,我想检查屏幕上的警报对话框是否打开。有人能告诉我如何做到这一点吗?现在每次我按ontap,它都会出现一个新的对话框。我如何才能只出现一个对话框,而不是多个新的对话框?
我已经试过bool,ontap取消所有不工作。
第一个

brqmpdu1

brqmpdu11#

你可以用一个布尔状态来实现这个功能,我们称之为isButtonActive。按钮的启用/禁用取决于这个状态的值。当按钮被按下时,将状态设置为false,当对话框关闭时,将状态设置为true。
下面是一个示例代码:

class _HomePageState extends State<HomePage> {
  bool isButtonActive = true;

  showTimer(BuildContext context) async {
    setState(() {
      isButtonActive = false;
    });

    await Future.delayed(Duration(seconds: 2));

    showDialog(
      context: context,
      builder: (BuildContext context) {
        return Column(
          children: const [
            Text('qwerty'),
          ],
        );
      },
    ).then((value) {
      setState(() {
        isButtonActive = true;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('총톤수'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: isButtonActive ? () => showTimer(context) : null,
          child: const Text('총톤수'),
        ),
      ),
    );
  }
}

相关问题