• 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('+'),
        ),
      ),
    ),
  • 相关阅读:
    各种排序(二)
    各种排序(一)
    【游记】CSP-S2019游记
    【题解】hdu1506 Largest Rectangle in a Histogram
    【题解】CF161B Discounts
    【CSP-S膜你考】我们的可可西里
    Bzoj3675 [Apio2014]序列分割
    Bzoj3853 GCD Array
    Bzoj3876 [Ahoi2014]支线剧情
    Bzoj2324 [ZJOI2011]营救皮卡丘
  • 原文地址:https://www.cnblogs.com/ashamp/p/11401564.html
Copyright © 2020-2023  润新知