zoukankan      html  css  js  c++  java
  • 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('+'),
        ),
      ),
    ),
  • 相关阅读:
    141. Linked List Cycle【easy】
    237. Delete Node in a Linked List【easy】
    234. Palindrome Linked List【easy】
    排序_归并排序
    排序_选择排序
    排序_快速排序
    排序_冒泡排序
    排序_希尔排序
    排序_插入排序
    121. Best Time to Buy and Sell Stock【easy】
  • 原文地址:https://www.cnblogs.com/ashamp/p/11401564.html
Copyright © 2011-2022 走看看