我的应用程序在创建其页面之一时通过 AlertDialog 小部件显示欢迎消息。我想在 4 秒后自动关闭对话框,或者让用户通过点击对话框外来关闭它。
void _showWelcomeDialog(BuildContext context) {
final displayName = UserPageInherited.of(context).displayName;
String bodyContent = "Welcome $displayName";
var dialog = WelcomeAlertWidget(bodyContent);
showDialog(
context: context,
builder: (context) {
return dialog;
});
}
Run Code Online (Sandbox Code Playgroud)
welcomeAlertWidget 是一个 StatelessWidget,它返回一个 AlertDialog。
一旦 bloc 进入特定状态,我就会_showWelcomeDialog()在 a 中调用该函数BlocBuilder,如下所示:
WidgetsBinding.instance
.addPostFrameCallback((_) => _showWelcomeDialog(context));
Future.delayed(const Duration(seconds: 4), () {
setState(() {
// Here you can write your code for open new view
Navigator.of(context, rootNavigator: true).pop('dialog');
});
});
Run Code Online (Sandbox Code Playgroud)
如果用户在 4 秒结束之前关闭对话框,并且 Future 返回,背景小部件就会消失,我会留下黑屏。我想知道是否有人可以帮助我避免这个问题。
谢谢