[Flutter]Android exit app

쏘리초이·2020년 6월 13일
0

TIL

목록 보기
18/23

Android는 Backbutton이 존재한다. 네이티브 앱(java나 Kotlin으로 만든 android앱)에서는 직접 컨트롤이 가능한 것 같다. 그렇지만, flutter로 만든 android앱의 경우에는 추가적으로 코딩을 해줘야 한다. 가장 상단의 widget에 WillPopScope 위젯으로 감싸주고, onWillPop 이라는 property를 추가, 설정해준다.

class Page2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new WillPopScope(
      child: new Scaffold(
        appBar: new AppBar(
          title: new Text('Page 2'),
        ),
        body: new Center(
          child: new Text('PAGE 2'),
        ),
      ),
      onWillPop: _onWillPop,
    );
  }
  
  Future<bool> _onWillPop() async {
    return (await showDialog(
      context: context,
      builder: (context) => new AlertDialog(
        title: new Text('Are you sure?'),
        content: new Text('Do you want to exit an App'),
        actions: <Widget>[
          new FlatButton(
            onPressed: () => Navigator.of(context).pop(false),
            child: new Text('No'),
          ),
          new FlatButton(
            onPressed: () => Navigator.of(context).pop(true),
            child: new Text('Yes'),
          ),
        ],
      ),
    )) ?? false;
  }
}

가장 최상단에 있는 Scaffold위젯을 WillPopScope로 감싸고, Future 로 함수를 만들어 준다.

위의 예시처럼 Navigator.of(context).pop(true) 로 설정해도 되지만, context때문에 다른 곳으로 함수를 빼놓고 여러 페이지에서 불러 쓸때는 Navigator가 작동하지 않는다.

그때, 앱을 종료하기 위한 방식이 있다.
1. Navigator.of(context).pop(true)
2. SystemNavigator.pop() // 앱 종료
3. exit(0) //강제종료

이렇게 세가지의 방식을 통해서 android에서 앱을 종료하기 위해 사용할 수 있다.

profile
Hello Universe!

0개의 댓글