Flutter设计一个长按自动步进的按钮
实现此功能需要3个触发事件
1.识别长按开始
2.识别长按结束
3.在开始和结束之间,自动按时间间隔执行按钮点按的操作
写出对应的事件代码
final Observable timer = Observable.periodic(Duration(milliseconds: 100)).asBroadcastStream(); final PublishSubject longPressGesBeganSignal = PublishSubject(); final PublishSubject longPressGesEndedSignal = PublishSubject();
然后在initState中,对事件按需求进行变换
@override void initState() { super.initState(); longPressGesBeganSignal.flatMap((_) { return timer.takeUntil(longPressGesEndedSignal); }).listen(plusBtnOnclick); }
在build方法中,GestureDetector的实例需要在onLongPressStart和onLongPressEnd回调中,调用add方法为对应的PublishSubject实例添加事件
GestureDetector( behavior: HitTestBehavior.opaque, onTap: () { plusBtnOnclick(null); }, onLongPressStart: (longPressEndDetails) { longPressGesBeganSignal.add('began'); }, onLongPressEnd: (longPressEndDetails) { longPressGesEndedSignal.add('end'); }, child: Container( child: Center( child: Text('+'), ), ), ),
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步