Flutter|Flutter 点击两次退出app的实现示例
目录
- 1.App组件
- 2.InAppWebview组件
使用场景:当用户在某一段时间内连续点击两次返回键,才会被认为是退出应用。
在Flutter中想实现这个功能,首先我们先来认识一个Flutter中的组件WillPopScope,在Flutter中我们是用这个组件来实现物理返回键拦截的,从而实现点击两返回键退出应用。
【Flutter|Flutter 点击两次退出app的实现示例】onWillPop是他的一个回调函数,当用户点击返回按钮时被调用(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(); // 退出appreturn 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(); // 退出appreturn Future.value(true); // await SystemChannels.platform.invokeMethod('SystemNavigator.pop'); }});
到此这篇关于Flutter 点击两次退出app的实现示例的文章就介绍到这了,更多相关Flutter 点击两次退出app内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 10 个 Flutter 组件推荐 - 3
- Flutter之SliverAppBar
- 双目三维重建_聊聊三维重建双目立体视觉原理
- 算法|三维重建——相机几何参数标定
- WinXP点击缩略图后没有文件名怎样处理?
- android 如何让通知不被清除或者点击后不消失
- [Flutter] lib/main.dart:1: Warning: Interpreting this as package URI, 'package:flutter_app/main.
- Flutter: X Android license status unknown
- Flutter - 本地化启动列表中App名字
- Flutter项目之app升级方案