dart 3秒后关闭的Flutter弹出窗口

omvjsjqw  于 2023-07-31  发布在  Flutter
关注(0)|答案(2)|浏览(182)

我是一个全新的Flutter,并试图创建一个警报弹出,当用户点击一个按钮出现。
这是不同的职位已经在堆栈溢出要求一个警告对话框,所以请不要投票否决这个问题。
我想弹出窗口出现3秒钟,然后自行关闭。
我面临的问题是,当按钮被点击时,弹出窗口根本不会出现。
以下是我迄今为止所做的:

class ExitGameRoute extends StatelessWidget {
  const ExitGameRoute({super.key});

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
        onPressed: () => (
              context: context,
              builder: (context) => const AlertDialog(
                    title: Text('Exiting Game Alert'),
                    content: Text('Exiting Build Up Domino...'),
                    // return const AlertDialog(
                    //   title: Text('Exiting Build Up Domino...')
                    // );
                  ),
              Future.delayed(const Duration(seconds: 3), () {
                Navigator.of(context).pop(true);
              })
            ),
        child: const Text('Exit Game',
            style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold)));
  }
}

字符串
请帮助我理解我错在哪里。谢谢你,谢谢

30byixjq

30byixjq1#

按钮

ElevatedButton(
          onPressed: () => showDialog(
            context: context,
            builder: (context) {
              return AlertWidget();
            },
          ),
          child: Text(
            "Show alert box and close after 3 seconds",
          ),
        )

字符串

预警对话框

class AlertWidget extends StatefulWidget {
  const AlertWidget({Key key}) : super(key: key);

  @override
  State<AlertWidget> createState() => _AlertWidgetState();
}

class _AlertWidgetState extends State<AlertWidget> {
  //
  @override
  void initState() {
    super.initState();

    // CALL THE CLOSE FUNCTION WHEN AlertWidget OPEN
    close();
  }

  //
  void close() {
    // It will start the countdown when AlertWidget opens and close after 3 seconds
    Future.delayed(
      Duration(seconds: 3),
      () {
        if (mounted) {
          Navigator.pop(context);
        }
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      title: Text("Exiting Game Alert"),
      content: Text("Exiting Build Up Domino..."),
    );
  }
}

x6yk4ghg

x6yk4ghg2#

class ExitGameRoute extends StatelessWidget {
  
const ExitGameRoute({super.key});

@override
  Widget build(BuildContext context) {

    return ElevatedButton(
        onPressed: (){
          showDialog(
              context: context,
              builder: (context) => const AlertDialog(
                    title: Text('Exiting Game Alert'),
                    content: Text('Exiting Build Up Domino...'),
                    // return const AlertDialog(
                    //   title: Text('Exiting Build Up Domino...')
                    // );
                  ));
              Future.delayed(const Duration(seconds: 3), () {
                Navigator.of(context).pop(true);
              });
        },
        child: const Text('Exit Game',
            style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold)));
  }
}

字符串
您没有在onPressed回调中使用showDialog函数。
上面的代码使用这个可以正常工作。

相关问题