상황: PopupMenuButton에 PopupMenuItem를 눌렀을 때 Dialog가 열리지 않음
이유: PopupMenuItem의 onTap 콜백은 Navigator.pop을 호출하여 팝업을 닫음 -> dialog 도 같이 닫힘
해결: 딜레이를 줘서 해결
PopupMenuButton(itemBuilder: (context) {
return [
PopupMenuItem(
child: const Text("리뷰 등록"),
onTap: () {
Future.delayed(
const Duration(seconds: 0),
() => showDialog(
context: context,
builder: (context) {
return AlertDialog(
title: const Text("리뷰 등록"),
actions: [
TextButton(
onPressed: () =>
Navigator.of(
context)
.pop(),
child: const Text("취소"),
),
TextButton(
onPressed: () {},
child:
const Text("등록"))
],
content: Column(
mainAxisSize:
MainAxisSize.min,
children: [
TextFormField(),
Row(
children:
List.generate(
5,
(index) =>
const Icon(
Icons.star,
color:
Colors.orange,
),
),
),
],
),
);
},
));
},
),
PopupMenuItem(child: Text("data"))
];
}),
참고 : stackoverflow