Flutter - ShowDialog未显示对话框

9gm1akwq  于 2022-11-25  发布在  Flutter
关注(0)|答案(2)|浏览(255)

下面是my _showDialog函数:

Future<void> _showDialog({BuildContext context, String msg, String title}) async {
  showDialog<bool>(
      context: context,
      builder: (context) {
        return AlertDialog(
          title: Text(title),
          content: Text(msg),
          actions: [
            FlatButton(
              child: Text('Ok'),
              onPressed: () => Navigator.of(context).pop(true),
            ),
          ],
        );
      });
}

下面是我的代码:

if (result.contains("Error")) {
          // Error!!! 
          // Show ERROR dialog box.

          _showDialog(context: context, title: "Error", msg: result);

        } else {
          // Success!!! 
          // Show SUCCESS dialog box, then return to the previous screen.
          
          _showDialog(context: context, title: "Success", msg: "Success!");

          Navigator.pop(context); // return to the previous screen

        }

如果发生错误,则会显示ERROR对话框。但如果没有错误,则不会显示SUCCESS对话框。
如果行

Navigator.pop(context);

会将其显示的SUCCESS对话方块注解掉。
我需要在返回上一屏幕之前显示“成功”对话框。

ee7vknir

ee7vknir1#

然后,您应该等待对话框上的关闭按钮响应,例如:

Future _showDialog({BuildContext context, String msg, String title}) async {
return await showDialog<bool>(
  context: context,
  builder: (context) {
    return AlertDialog(
      title: Text(title),
      content: Text(msg),
      actions: [
        FlatButton(
          child: Text('Ok'),
          onPressed: () => Navigator.of(context).pop(true),
        ),
      ],
    );
    });
}

然后再

if (result.contains("Error")) {
      // Error!!! 
      // Show ERROR dialog box.

      _showDialog(context: context, title: "Error", msg: result);

    } else {
      // Success!!! 
      // Show SUCCESS dialog box, then return to the previous screen.
      
      await _showDialog(context: context, title: "Success", msg: "Success!");

      Navigator.pop(context); // return to the previous screen

    }
omhiaaxx

omhiaaxx2#

我也遇到了同样的问题,但是在showDialog前面添加await为我解决了这个问题

相关问题