import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; class DoubleTapToExitWidget extends StatefulWidget { final Widget child; final Duration duration; const DoubleTapToExitWidget( {super.key, required this.child, this.duration = const Duration(seconds: 1)}); @override State createState() => DoubleTapToExitWidgetState(); } class DoubleTapToExitWidgetState extends State { DateTime? lastPressedAt; @override Widget build(BuildContext context) { return PopScope( canPop: false, onPopInvokedWithResult: (bool didPop, Object? result) async { final now = DateTime.now(); if (lastPressedAt == null || now.difference(lastPressedAt!) >= widget.duration) { setState(() { lastPressedAt = now; }); SmartDialog.showToast('再按一次退出'); } else { SystemNavigator.pop(); } }, child: widget.child); } }