320x100
728x90
로그인 후, 메인 화면에서
뒤로가기를 두 번 눌렀을 때, toast 메세지를 띄운 후 앱 종료하는 방법을
알아보고자 한다.
1. MainScreen에서 WillPopScope위젯 설정과 함수 만들기
class _MainScreenState extends State<MainScreen> {
...
@override
Widget build(BuildContext context) {
return Scaffold(
body: WillPopScope(
onWillPop: onWillPop,
Scaffold 위젯의 body에서 WillpopScope 위젯으로 나머지 위젯들을 감싼다.
2. DateTime 변수 선언 및 관련 함수 만들기
아래 변수를 선언해준 뒤, _MainScreenState 안에서 뒤로 가기 버튼을 처리하는 onWillPop() 함수를 만든다.
DateTime? currentBackPressTime;
Future<bool> onWillPop(){
DateTime now = DateTime.now();
if(currentBackPressTime == null || now.difference(currentBackPressTime!)
> Duration(seconds: 2))
{
currentBackPressTime = now;
final msg = "'뒤로'버튼을 한 번 더 누르면 종료됩니다.";
Fluttertoast.showToast(msg: msg);
return Future.value(false);
}
return Future.value(true);
}
토스트 메세지 패키지는 아래에서 설치
https://pub.dev/packages/fluttertoast
※ 라우터 사용 시, 로그인 화면에서 메인 화면으로 넘어갈 때 주의해야 할 부분이 있다.
Navigator.push 가 아닌
Navigator.pushNamedAndRemoveUntil(context, RouteName, (route) => false);
pushNamedAndRemoveUntil을 사용해 주어야
메인화면에서 뒤로가기를 눌렀을 때, 로그인 화면으로 돌아가지 않고 바로 종료되는 것을 볼 수 있다.
728x90
반응형
'Flutter' 카테고리의 다른 글
[Flutter/플러터] 키보드 overflowed 문제 해결하기(키보드 열림 무시) (0) | 2022.09.21 |
---|---|
[Flutter/플러터] Dart에서의 변수 할당(final, const, static) (1) | 2022.09.21 |
[Flutter/플러터] flutter_native_splash를 활용하여 splash 화면 만들기 (0) | 2022.08.02 |
[Flutter] 플러터 POST response 및 request 모델 자동 코드 사이트 (0) | 2022.06.14 |
[flutter/플러터] MaterialApp과 Scaffold (0) | 2022.05.23 |