Flutter_04_實現連續兩次返回退出
阿新 • • 發佈:2021-08-06
/// 封裝一個連續按兩次返回鍵退出頁面的元件 /// child 子元件 /// delay 兩次返回間隔時間 class UseWillPopScope extends StatefulWidget { final Widget child; final Duration delay; const UseWillPopScope( {Key? key, this.delay = const Duration(seconds: 1), required this.child}) : super(key: key); @override _UseWillPopScopeState createState() => _UseWillPopScopeState(); } class _UseWillPopScopeState extends State<UseWillPopScope> { DateTime? _lastWillPopAt; @override Widget build(BuildContext context) { return WillPopScope( child: widget.child, onWillPop: () async { print(_lastWillPopAt); if (_lastWillPopAt == null || _lastWillPopAt != null && DateTime.now().difference(_lastWillPopAt!) > widget.delay) { _lastWillPopAt = DateTime.now(); Fluttertoast.showToast( msg: '再按一次退出Flutter Go', fontSize: 16.0, backgroundColor: Colors.grey, gravity: ToastGravity.CENTER, ); return false; } return true; }, ); } }