BGH*_*BGH 13
有点偷懒,实际上这并不难
// init
int lastTap = DateTime.now().millisecondsSinceEpoch;
int consecutiveTaps = 0;
GestureDetector(
onTap: () {
int now = DateTime.now().millisecondsSinceEpoch;
if (now - lastTap < 1000) {
print("Consecutive tap");
consecutiveTaps ++;
print("taps = " + consecutiveTaps.toString());
if (consecutiveTaps > 4){
// Do something
}
} else {
consecutiveTaps = 0;
}
lastTap = now;
},
child: ...
)
Run Code Online (Sandbox Code Playgroud)
小智 6
我尝试了这里提到的方法,但它对我不起作用。无论点击次数如何,GestureDetector onTap 仅调用一次。flutter 中可能发生了一些变化(我在 beta 频道)。但是,我深入研究了flutter的源代码并找到了解决方案(https://api.flutter.dev/flutter/gestures/SerialTapGestureRecognizer-class.html):
import "package:flutter/gestures.dart";
import 'package:flutter/material.dart';
RawGestureDetector(
gestures: {
SerialTapGestureRecognizer:
GestureRecognizerFactoryWithHandlers<SerialTapGestureRecognizer>(
SerialTapGestureRecognizer.new,
(SerialTapGestureRecognizer instance) {
instance.onSerialTapDown = (SerialTapDownDetails details) {
if (details.count == 3) print('Consecutive tap 3');
};
})
},
// child: // your widget,
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3636 次 |
| 最近记录: |