[Flutter] Backpressed WillPopScope #pop

2024. 4. 3. 13:53dev/flutter

728x90
반응형

웹에서 뒤로가기시 이전 화면을 보여주기

: 우선, WillPopScope로 보여준다

: return false는 뒤로가지 못하게 막는 것

: return true는 뒤로가도록 허용하는 것

@override
Widget build(BuildContext context) {
  return WillPopScope(
    onWillPop: () async {
      if (await webviewController.canGoBack()) {
        webviewController.goBack();
        return false;
      } else {
        return true;
      }
    },
    child: Scaffold(
      body: WebViewWidget(
          controller: webviewController,
        ),
    ),
  );
}

 

android에서 backpressDispatcher를 만져줘야 하나 했지만, dart엔진 위에 그려지는 것이기 때문에

걱정할 필요가 없는 듯하다.

 

WillPopScope는 Deprecated된 위젯이기 때문에 PopScope로 변환해보자,

@override
Widget build(BuildContext context) {
  return PopScope(
    canPop: false,
    onPopInvoked: (bool didPop) async {
      if (await webviewController.canGoBack()) {
        webviewController.goBack();
      } else {
        SystemNavigator.pop(animated: true);
      }
    },
    child: Scaffold(
      body: WebViewWidget(
          controller: webviewController,
        ),
    ),
  );
}
728x90
반응형

'dev > flutter' 카테고리의 다른 글

[Flutter] Filled #shape #buttonstyle  (0) 2024.04.24
[Flutter] admob Banner 광고(AlertDialog)  (0) 2024.04.04
[Flutter] Dropdown #Spinner  (0) 2024.03.29
[Flutter] AnimatedList  (0) 2024.03.06
[Flutter] TopNavigationBar(DefaultTabController), TabBar  (0) 2024.03.05