我正在PopupMenuButton我的应用程序中使用。我想showDialog点击一个PopupMenuItem.
我的PopupMenuItem:
PopupMenuItem(
child: Text("Show dialog"),
onTap: () {
showDialog(
context: context,
barrierColor: Colors.black26,
builder: (context) => AlertDialog(
...
)
},
),
Run Code Online (Sandbox Code Playgroud)
onSelected在里面使用也PopupMenuButton不起作用。
Moh*_*hri 18
那是因为 popupMenuItem 的 onTap 尝试使用 Navigator.pop 关闭弹出窗口,但同时您尝试显示对话框,因此它关闭对话框并保留弹出窗口,因此您可以等到所有动画或正在进行的事情完成然后显示对话框
代码:dartPad代码
PopupMenuItem(
child: const Text('Item 0'),
onTap: () {
WidgetsBinding?.instance?.addPostFrameCallback((_) {
showCupertinoDialog(
context: context,
builder: (context) {
return CupertinoAlertDialog(
title: const Icon(CupertinoIcons.info_circle),
content: const Text(
'Hello User, Welcome',
textAlign: TextAlign.center,
),
actions: [
CupertinoDialogAction(
isDefaultAction: true,
onPressed: () => Navigator.pop(context),
child: const Text('Thanks'),
),
],
);
});
});
}),
Run Code Online (Sandbox Code Playgroud)
试试这个:
PopupMenuItem(
child: Text("Show dialog"),
onTap: () {
Future<void>.delayed(
Duration.zero,
() => showDialog(
context: context,
barrierColor: Colors.black26,
builder: (context) => AlertDialog(...),
),
),
},
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2143 次 |
| 最近记录: |