AlertDialog 창 외부 화면을 눌러도 안꺼지게 막기
showDialog의 barrierDismissible 값을 false로 설정한다.
뒤로가기 버튼 막기
show dialog의 builder의 최상위 위젯을 뒤로가기 버튼에 대한 콜백을 설정할 수 있는 WillPopScope위젯으로 두고 onWillPop에 () async => false 콜백을 설정해 아무일도 일어나지 않게 함
둘 다 적용하면 아래와 같다.
showDialog(
context: context,
barrierDismissible: false,
builder: (context) {
return WillPopScope(
onWillPop: () async => false,
child: AlertDialog(
...
),
);
}
)
사용자가 창을 닫을 수 없게 할 경우 주의점
exception이 발생해도 창이 무조건 닫히도록 예외처리를 해주어야 한다. 안그러면 사용자가 아무것도 할 수 없고 앱을 무조건 종료해야 하는 불편한 상황이 발생하게 된다.
내 경우엔 로딩창으로 쓰기위해 사용했는데 이를 띄우고 닫게 해주는 클래스를 따로 구현하고 try finally를 이용했다.
로딩창을 띄운 뒤 기다려야하는 작업을 try에서 수행하다가 무슨 일이 발생하더라도 종료되면 무조건 finally에서 로딩창을 닫도록 처리해주었다.
참고
'개발 > Flutter' 카테고리의 다른 글
[Theme] TextStyle 전체 변경 (0) | 2022.06.13 |
---|---|
AlertDialog content에 Column위젯 쓸 때 높이 자동 조절 (0) | 2022.06.13 |
package 이름 변경 (0) | 2022.06.11 |
Error running pod install (0) | 2022.06.10 |
[Error] Bad state: Cannot set the body fields of a Request with content-type "application/json" (0) | 2022.06.06 |