为了避免用户误触返回按钮而导致APP退出,在很多APP中都拦截了用户点击返回键的按钮,当用户在某一个时间段内点击两次时,才会认为用户是要退出(而非误触)。Flutter中可以通过WillPopScope来实现返回按钮拦截,我们看看WillPopScope的默认构造函数:
再按一次退出行为
return WillPopScope(
onWillPop: () {
// 点击返回键的操作
if (lastPopTime == null ||
DateTime.now().difference(lastPopTime) > Duration(seconds: 2)) {
lastPopTime = DateTime.now();
Fluttertoast.showToast(
msg: "再按一次退出",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.BOTTOM,
backgroundColor: Theme.of(context).accentColor,
textColor: Colors.black,
fontSize: 16.0);
} else {
lastPopTime = DateTime.now();
// 退出app
exit(0);
}
},
)
WillPopScope用来监听用户点击返回键
然后我们需要先做好一个时间的判断,比如两次点击在两秒之内(可以通过difference对比两个时间的时间差)即可进行退出操作
[^Fluttertoast]: https://pub.dev/packages/fluttertoast
这是一个提示信息,