首页 > 解决方案 > 如何设置 onLongPress Flutter 的持续时间

问题描述

我知道onLongPress会在一段时间后触发(比如 500 毫秒左右)。但我想做的是在用户按下按钮 3 秒时触发一些动作。其实我想设置的持续时间onLongPress

ElevatedButton(
  onPressed: () => print('ok I\'m just fine'),
  onLongPress: () => print('Trigger me when user presses me for like 3 seconds'),
  style: ElevatedButton.styleFrom(
  primary: Colors.red,
  elevation: 4,
),

标签: flutterdartflutter-layout

解决方案


您可以通过这种方式解决您的问题,将 GestureDetector 的 onPanCancel 和 onPanDown 与计时器一起使用。

class _MyHomePageState extends State<MyHomePage> {
  Timer _timer;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: GestureDetector(
        onPanCancel: () => _timer?.cancel(),
        onPanDown: (_) => {
          _timer = Timer(Duration(seconds: 3), () { // time duration
            // your function here
          })
        },
      ),
    );
  }
}

让我知道它是否适合你。


推荐阅读