我PopupMenuButton在我的應用程式中使用。我想showDialog點擊一個PopupMenuItem.
我的PopupMenuItem:
PopupMenuItem(
child: Text("Show dialog"),
onTap: () {
showDialog(
context: context,
barrierColor: Colors.black26,
builder: (context) => AlertDialog(
...
)
},
),
也在onSelected里面使用沒用PopupMenuButton。
uj5u.com熱心網友回復:
試試這個:
PopupMenuItem(
child: Text("Show dialog"),
onTap: () {
Future<void>.delayed(
const Duration(milliseconds: 500), // OR const Duration(),
() => showDialog(
context: context,
barrierColor: Colors.black26,
builder: (context) => AlertDialog(
...
),
),
},
);
uj5u.com熱心網友回復:
那是因為 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'),
),
],
);
});
});
}),
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/314887.html
