假设我在Flutter应用中的某个位置有此按钮:
FloatingActionButton(
backgroundColor: Theme.of(context).primaryColor,
child: Icon(Icons.arrow_upward),
onPressed: _someAction,
);
我希望只要手指在按钮上点击即可执行_someAction()
(即如果我连续T秒钟点击_someAction()
应该执行 N次,
其中N=(int)(60/T + 1))
我调查了GestureDetector
但在那里找不到我需要的东西。
例如,我需要此值以增加/减少一些int
值...
答案 0 :(得分:0)
使用onTapDown
和onTapUp
中的GestureDetector
和Timer
来实现您的目标。
GestureDetector
onTapDown: (_) => setState(() {
_timerStart = true;
_restartTimer();
}),
onTapUp: (_) => setState(() => _timerStart = false),
某些操作
void _restartTimer() {
_timer?.cancel();
_timer = Timer(Duration(milliseconds: 100), () {
// _someAction()
if (_timerStart) {
_restartTimer();
}
});
}
答案 1 :(得分:0)
int _value = 0;
Timer _timer;
Widget build(BuildContext context) {
return GestureDetector(
onTapDown: (details) => _startTimer(true),
onTapUp: (details) => _startTimer(false),
child: FlutterLogo(size: 200),
);
}
void _startTimer(bool start) {
if (!start) {
_timer.cancel();
return;
}
// you can adjust the timings here
_timer = Timer.periodic(Duration(milliseconds: 1), (_) => _myMethod());
}
// this method will be getting called as long as you hold
void _myMethod() => print("value = ${++_value}");