检查Flutter中的按钮按下了多长时间

问题描述

我实际上正在使用Division处理按钮的手势。但是我仍在寻找一种方法,无论是否进行分割。我希望在1000毫秒而不是500毫秒后长按按钮。

我已经在SO和其他网站上进行了搜索,但似乎仍然找不到解决此确切问题的方法

这是与Division一起工作的方式。我尝试使用while和Future.delayed,但似乎无法使其正常工作。但是,如果不在Division的Gesture()中,那也很好。因为我只是希望它能够正常运行,而不管它是否正在使用Division。

Gestures()
          ..isTap((isTapped) => setState(() => pressed = isTapped))
          ..onLongPress(() { print("long pressed"); })

谢谢。

解决方法

一种实现此目的的方法是使用Timer中的dart:async

class _MyWidgetState extends State<MyWidget> {
  
  Timer timer;
  
  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTapDown: (_) {
        timer = Timer(Duration(milliseconds: 1000),onLongerPress);
      },onTapUp: (_){
        timer.cancel();
      },child: Container(child: Center(child: Text('Click here')),width: 200,height: 50,color: Colors.green),);
  }
  
  void onLongerPress() {
    print('onLongerPress called');
  }
  
}
,

您可以从此代码中使用

 GestureDetector(
    onLongPress: () {
      setState(() {
        _lights = true;
      });
    },);