日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

Flutter?點擊兩次退出app的實現(xiàn)示例_Android

作者:Rijkaard ? 更新時間: 2022-07-06 編程語言

在安卓手機上才會有物理返回鍵,而ios手機是沒有的,所以說這個是安卓手機獨有的功能。

使用場景:當用戶在某一段時間內連續(xù)點擊兩次返回鍵,才會被認為是退出應用。

在Flutter中想實現(xiàn)這個功能,首先我們先來認識一個Flutter中的組件WillPopScope,在Flutter中我們是用這個組件來實現(xiàn)物理返回鍵攔截的,從而實現(xiàn)點擊兩返回鍵退出應用。

onWillPop是他的一個回調函數(shù),當用戶點擊返回按鈕時被調用(Android物理返回按鈕),該回調需要返回一個Future對象,如果返回的Future最終值為false時,則當前路由不出棧(不會返回);最終值為true時,當前路由出棧退出。我們需要提供這個回調來決定是否退出。

1.App組件

DateTime? lastPopTime;
onWillPop: () async {
  if (lastPopTime == null ||
      DateTime.now().difference(lastPopTime!) > Duration(seconds: 1)) {
    lastPopTime = DateTime.now();

    ToastUtils.showToast("再按一次退出");
    return Future.value(false);
  } else {
    lastPopTime = DateTime.now();
    // 退出app
    return Future.value(true);
  }
});

2.InAppWebview組件

DateTime? lastPopTime;
onWillPop: () async {
  // webViewController?.goBack();
  // return Future.value(false);

  if (lastPopTime == null ||
      DateTime.now().difference(lastPopTime!) > Duration(seconds: 1)) {
    lastPopTime = DateTime.now();

    if (await webViewController?.canGoBack() == true) {
      await webViewController?.goBack();
    } else {
      ToastUtils.showToast("再按一次退出");
    }
    return Future.value(false);
  } else {
    lastPopTime = DateTime.now();
    // 退出app
    return Future.value(true);
    // await SystemChannels.platform.invokeMethod('SystemNavigator.pop');
  }
});

原文鏈接:https://juejin.cn/post/7096409359919513607

欄目分類
最近更新