widget实现
import 'package:flutter/cupertino.dart';
typedef TapAction = void Function();
class SingleGestureDetector extends StatelessWidget {
final Widget child;
final TapAction tapAction;
final TapAction againAction;
final int tapDuration;
DateTime? lastTapTime;
SingleGestureDetector(
{Key? key,
required this.child,
required this.tapAction,
required this.tapDuration, required this.againAction});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
if (lastTapTime == null || DateTime.now().difference(lastTapTime!) > Duration(seconds: tapDuration)) {
lastTapTime = DateTime.now();
tapAction();
} else {
againAction();
}
},
child: child,
);
}
}
使用方法
SingleGestureDetector(
tapAction: () {
},
againAction: () {
},
tapDuration: 2,
child: Container(),
)