如何从 Flutter 中的方法获取 AlertDialog 回调?
Posted
技术标签:
【中文标题】如何从 Flutter 中的方法获取 AlertDialog 回调?【英文标题】:How to get AlertDialog Callback from method in Flutter? 【发布时间】:2019-12-09 21:42:32 【问题描述】:我在静态方法中有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
,
),
],
);
,
);
【问题讨论】:
【参考方案1】:您可以通过点击OK
来等待对话框被关闭返回 null 或关闭,在这种情况下,将返回true
class DialogUtils
static Future<bool> displayDialogOKCallBack(
BuildContext context, String title, String message) async
return await showDialog<bool>(
context: context,
builder: (BuildContext context)
return AlertDialog(
title: new Text(title, style: normalPrimaryStyle,),
content: Text(message),
actions: <Widget>[
FlatButton(
child: Text(LocaleUtils.getString(context, "ok"), style: normalPrimaryStyle,),
onPressed: ()
Navigator.of(context).pop(true);
// true here means you clicked ok
,
),
],
);
,
);
然后当您调用displayDialogOKCallBack
时,您应该await
获取结果
例子:
onTap: () async
var result =
await DialogUtils.displayDialogOKCallBack();
if (result)
// Ok button is clicked
【讨论】:
我想你的意思是 if (result == true) // Ok button is clicked true 而不是 false 表示点击ok按钮。【参考方案2】:然后为Future工作回调函数:
DialogUtils.displayDialogOKCallBack().then((value)
if (value)
// Do stuff here when ok button is pressed and dialog is dismissed.
);
【讨论】:
以上是关于如何从 Flutter 中的方法获取 AlertDialog 回调?的主要内容,如果未能解决你的问题,请参考以下文章
如何从flutter中的firestore文档字段中获取数据?
如何从 Flutter 中的 Firebase 实时数据库中按 categoryId 获取产品?
如何使用 Flutter 从 Firebase 中的两个集合中获取数据