[Flutter]
[Flutter] showDialog 뒤로가기
Hevton
2023. 12. 23. 00:27
반응형
showDialog를 사용할 때, 뒤로가기를 통해 다이얼로그를 닫는 것을 방지하고 싶을 때가 있습니다.
이는 Android로 따지면 AlertDialog의 setCancelable(false) 과 같은 기능을 기대하는 것입니다.
Flutter의 showDialog에는 barrierDismissible 라는 속성이 있습니다.
기본값은 true이며, false를 넣어주면 뒤로가기를 무력화시켜줌을 기대할 수 있지만 안타깝게도 그렇지 않습니다.
다이얼로그 밖 화면을 터치했을 때 다이얼로그가 닫히는지의 여부일 뿐, 뒤로가기를 제어할 순 없습니다.
setCancelable(false) 기능을 위해선, WillPopScope 위젯을 이용하면 됩니다.
showDialog(
barrierDismissible: false,
context: context,
builder: (context) => WillPopScope(
onWillPop: () async {
return false;
},
child: Center(
child: Container(
width: 60.0,
height: 60.0,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(4.0),
),
child: Padding(
padding: const EdgeInsets.all(12.0),
child: CupertinoActivityIndicator(),
),
),
),
),
);
이렇게 onWillPop의 리턴값으로 false를 남기게 되면, 뒤로가기가 불가능하게 됩니다.
따라서 dialog가 띄워져 있는 상황에서 뒤로가기로 다이얼로그를 닫을 수 없는 효과를 달성할 수 있게 됩니다.
반응형