[Flutter] BackButton Disable 처리하기

Elen li·2021년 7월 16일
0

앱 개발을 하다보면 뒤로가기 버튼을 막아야 하는 경우가 있다.
그럴 땐 Scaffold를 WillPopScope로 감싸보자.

결제 완료 이후 백버튼이 활성되어 있는 경우,
이중 결제와 같은 혼란을 줄 수 있는 시나리오를 제거하기 위해 백버튼을 막아야 하는 경우가 있다.

아이폰의 경우에는 간단하게 AppBar만 없앤다면 이런 버그를 막을 수 있지만,
갤럭시와 같은 기기를 사용중인 유저에게는 기기에 백버튼이 추가로 있기 때문에 잊지말고 해줘야 하는 처리가 있었다.

구현도 매우 간단하다.

WillPopScope 위젯으로 Scaffold를 감싸고,
onWillPop 변수에 원하는 동작을 구현해주면 된다.

@override
Widget build(BuildContext context) {
	return WillPopScope(
    	// 여기에 동작을 추가해주면 된다.
    	onWillPop: () async => false, 
    	child: Scaffold(
        ),
    );
}

WillPopScope 위젯을 조금만 들여다보면 클래스 설명은 아래와 같았다.

BackButton이 눌렸을 때, onWillPop이 콜백되면서 Future 값을 반환하게 됩니다.
반환 값이 true라면 화면이 pop 됩니다.

반환값이 Future이기 때문에 비동기처리인 async를 붙혀야 하며,
무조건 반환값이 false가 되도록 설정했기 때문에 페이지가 pop이 되지 않고 Backbutton이 막힌 듯한 동작으로 구현될 수 있었다.

profile
Android, Flutter 앱 개발자입니다.

0개의 댓글