有3种方法可以解除AlertDialog(在我的示例中):
1.在其屏障外轻敲。('取消')
1.点击按钮A,将调用pop().('to proceed')
1.点击按钮B,这将调用pop().(“取消”)
我希望在AlertDialog关闭后在then()回调中运行一些代码。此代码将取决于它是如何关闭的。
注意:我使用then()回调函数,这样我就可以检测到AlertDialog是否被关闭,而不是被按钮关闭。
这可能吗?
showDialog(context: context, builder: (context) => AlertDialog(
title: Text('Grant access'),
actions: [
/// Button 'A'
OutlinedButton(onPressed: (){
Navigator.of(context).pop();
/// Some more code
}, child: Text('Grant access')),
/// Button 'B'
OutlinedButton(onPressed: () {
Navigator.of(context).pop();
}, child: Text('Cancel'))
],
)).then((value) async {
// Code after closure. Can I detect what way the AlertDialog was dismissed?
});
2条答案
按热度按时间rsl1atfo1#
您可以传递像Navigator.of(context).pop('something ')这样的数据,然后在.then中接收其值
但是我建议你创建一个带回调的CustomDialog类,这样应该会更好。
m0rkklqb2#
您可以将
await
关键字与showDialog()
函数一起使用,然后检查该函数返回的值以确定消除方法。