본문 바로가기
Flutter

[Flutter/플러터] 뒤로가기 버튼 두 번 클릭 후 앱 종료하기

by 얘리밍 2022. 8. 2.
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

 

fluttertoast | Flutter Package

Toast Library for Flutter, Easily create toast messages in single line of code

pub.dev

 

 

 

 

 

 

 

 

 

※ 라우터 사용 시, 로그인 화면에서 메인 화면으로 넘어갈 때 주의해야 할 부분이 있다.

 

Navigator.push 가 아닌

 Navigator.pushNamedAndRemoveUntil(context, RouteName, (route) => false);

pushNamedAndRemoveUntil을 사용해 주어야

메인화면에서 뒤로가기를 눌렀을 때, 로그인 화면으로 돌아가지 않고 바로 종료되는 것을 볼 수 있다. 

 

 

 

 

 

 

 

 

728x90
반응형