问题描述
我实际上正在使用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;
});
},);