Flutter 连续增减值

Flutter 连续增减值,flutter,Flutter,我想知道是否有一种方法可以持续增加或减少一个值,只要我的手指保持在按钮上。 你用什么方法 感谢您的帮助您可以使用Flatter提供的GestureDetector小部件轻松完成此操作 基本上,这个想法是使用手势检测器的onLongPressStart、onLongPressEnd和计时器。从dart:async库定期执行此操作 onLongPressStart和onLongPressEnd是不言自明的,它们是长按事件开始和结束时的回调 Timer.periodic是我们用来为每个持续时间连续运行

我想知道是否有一种方法可以持续增加或减少一个值,只要我的手指保持在按钮上。 你用什么方法


感谢您的帮助

您可以使用Flatter提供的
GestureDetector
小部件轻松完成此操作

基本上,这个想法是使用
手势检测器的
onLongPressStart
onLongPressEnd
计时器。从
dart:async
库定期执行此操作

onLongPressStart
onLongPressEnd
是不言自明的,它们是长按事件开始和结束时的回调

Timer.periodic
是我们用来为每个持续时间连续运行一些代码的工具,我们使用
duration(毫秒:100)
来指定它,这意味着我们说,
每100ms连续运行我的代码,直到我取消

这是完整的工作代码

import 'dart:async';

class TimerExample extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => TimerState();
}

class TimerState extends State<TimerExample> {
  int counter = 0;    // Create a counter to maintain the number
  Timer timer;        // Create a timer that we can use to cancel later

  @override
  Widget build(BuildContext context) {
    return Center(
      child: GestureDetector(
        onLongPressStart: (details) {
          // When the longpress starts, create a Timer.periodic and assign it to timer variable
          timer = Timer.periodic(Duration(milliseconds: 100), (timer) {
            // Timer.periodic runs every 100 ms and updates the state
            setState(() {
              counter++;
            });
          });
        },
        onLongPressEnd: (details) {
          // when longpress ends, call timer.cancel to stop your timer
          timer.cancel();
        },
        child: Container(
          height: 50,
          width: 50,
          color: Colors.deepOrange,
          child: Text('$counter')),
      ),
    );
  }
}
导入'dart:async';
类TimerExample扩展StatefulWidget{
@凌驾
State createState()=>TimerState();
}
类TimerState扩展状态{
int counter=0;//创建一个计数器来维护数字
Timer Timer;//创建一个我们可以用来稍后取消的计时器
@凌驾
小部件构建(构建上下文){
返回中心(
儿童:手势检测器(
onLongPressStart:(详细信息){
//当长按启动时,创建一个Timer.periodic并将其分配给Timer变量
计时器=计时器。周期性(持续时间(毫秒:100),(计时器){
//Timer.periodic每100毫秒运行一次,并更新状态
设置状态(){
计数器++;
});
});
},
onLongPressEnd:(详细信息){
//当长按结束时,调用timer.cancel停止计时器
timer.cancel();
},
子:容器(
身高:50,
宽度:50,
颜色:颜色。深橙色,
子项:文本(“$counter”),
),
);
}
}

谢谢你给了我很多帮助:如果你的答案对我有用的话,请考虑接受我的回答。