我在静态方法中有AlertDialog
,因为我希望在用户单击OK
按钮时获得回调。
我尝试使用typedef
,但无法理解。
下面是我的代码:
class DialogUtils{
static void displayDialogOKCallBack(BuildContext context, String title,
String message)
{
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: new Text(title, style: normalPrimaryStyle,),
content: new Text(message),
actions: <Widget>[
new FlatButton(
child: new Text(LocaleUtils.getString(context, "ok"), style: normalPrimaryStyle,),
onPressed: () {
Navigator.of(context).pop();
// HERE I WANTS TO ADD CALLBACK
},
),
],
);
},
);
}
}
3条答案
按热度按时间j91ykkif1#
您只需等待对话框解除{返回null}或通过单击
OK
(在本例中,将返回true
)关闭然后当你调用
displayDialogOKCallBack
的时候你应该await
来得到结果示例:
toe950272#
然后回调函数以用于将来的工作:
disbfnqx3#
这条线索有点旧,但我发现了一个尚未触及的解决方案,所以我想在这里添加它。
我的AlertDialog中有一个表单,如果有任何错误,我需要保持对话框打开。这个解决方案对我很有效。
重要的部分是我 Package AlertDialog的WillPopScope。我认为这吸收了所有的Navigator.pop()调用,并通过onWillPop参数传递它们。这个参数传递了一个异步函数,该函数返回一个Future。我刚刚返回了验证检查布尔值,但在真实的世界中,这里也会有一个http请求。
记住添加一种方法,让用户可以取消表单而不触发表单验证。我只是添加了一个运行Navigator.pop()的取消按钮。
希望这对你有帮助,如果有人有任何问题,请告诉我。