我们在本章回中介绍的WillPopScope组件是一种事件拦截类组件,它没有具体的物理形态,也就是说我们在页面中看不到它。该组件主要用来拦截返回按钮发出的事件。
本章回中将详细介绍它的使用方法。
和其它组件一样,WillPopScope组件提供了相关的属性来控制自己,下面是该组件的属性:
Future<bool> _backIconOnPress() async {
///两次点击间隔小于3s时才退出当前页面:return true;
if(_lastPressedTime == null
|| DateTime.now().difference(_lastPressedTime!) > const Duration(seconds: 3)) {
_lastPressedTime = DateTime.now();
debugPrint('false');
return Future.value(false);
}else {
debugPrint('true');
return Future.value(true);
}
}
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: _backIconOnPress,
child: Scaffold(
appBar: AppBar(
title: const Text('Example of WillPopScope Widget'),
backgroundColor: Colors.purpleAccent,
),
body: const Center(
child: Text('连续两次点击小于3s时才能退出页面'),
),
),
);
}
在上面的示例代码中,WillPopScope组件封装了Scaffold组件,因此它会拦截Scaffold页面中返回按钮发出的事件。我们把该组件onWillPop属性对应的方法封装
为独立的方法,这个从代码中也可以看到,该方法中的业务逻辑是:连续两次点击返回按钮小于3s时才能退出页面。这个逻辑参考了wendu共享的《Flutter实战》,大家
可以依据自己的业务逻辑来拦截页面中返回按钮发出的事件。我在这里就不演示程序的运行结果了,建议大家自己动手去实践。
看官们,与"WillPopScope组件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!