美文网首页
Flutter 做一个简单的大转盘抽奖控件

Flutter 做一个简单的大转盘抽奖控件

作者: 月球在此 | 来源:发表于2023-02-09 14:31 被阅读0次
1.gif

功能实现起来其实非常简单,将下面三张图依次叠加起来,然后让指针转动或者奖励转动就可以了


image.png

先上代码

  @override
  void initState() {
    super.initState();
    animationController = AnimationController(
      vsync: this,
      duration: const Duration(milliseconds: 2000),
    );
    animationController.addListener(() {
      if (animationController.status == AnimationStatus.completed) {
        isRunning = false;
        //结束了
      } else if (animationController.status == AnimationStatus.forward) {
        // print('forward');
      } else if (animationController.status == AnimationStatus.reverse) {
        // print('reverse');
      }
    });
    // 创建一个从0到360弧度的补间动画 v * 2 * π
  }

  void startAnimation(int index) {
    _animation = Tween<double>(begin: 0, end: 2 + 0.125 * index)
        .animate(CurvedAnimation(
      parent: animationController,
      curve: const Interval(
        0,
        1.0,
        curve: Curves.ease,
      ),
    ));
    setState(() {});
    animationController.reset();
    animationController.forward();
  }

我们提供的素材是有8个奖品.所以我们最终的落点是 0.125 * index,但是我们之前要想多转两圈再停止所以前面先加2,可以根据设计给的图片改变其实旋转的圈数和最终落点的角度,修改角度的正负号就可以实现向左转动还是向右转动

Widget wheelView() {
    return SizedBox(
      width: 300,
      height: 300,
      child: Stack(
        children: [
          Align(
            alignment: Alignment.center,
            child: Image.asset(
              'assets/lucky_wheel/bg_zhuanpan.png',
              width: 300,
            ),
          ),
          Align(
            alignment: Alignment.center,
            child: RotationTransition(
                turns: _animation,
                child: Image.asset(
                  'assets/lucky_wheel/bg_superjiangpin.png',
                  width: 290,
                )),
          ),
          Align(
            alignment: Alignment.center,
            child: GestureDetector(
              onTap: buttonOnClickStartRun,
              child: Image.asset(
                'assets/lucky_wheel/ic_pointer.png',
                width: 150,
              ),
            ),
          ),
        ],
      ),
    );
  }

最后是控件本身非常简单,如果想转盘转,就把bg_superjiangpin设置动画,如果想指针转就用ic_pointer设置动画

github地址:https://github.com/CZXBigBrother/flutter_lucky_wheel

相关文章

  • php实现刮刮卡大转盘抽奖概率

    php实现刮刮卡大转盘抽奖概率 本文实例为大家分享了php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法,用法很简单...

  • 微信小程序幸运大转盘制作教程

    幸运大转盘抽奖方式是我见过最常用的抽奖方式了,这种方式简单,直接,让人看着兴奋。那么,幸运大转盘微信小程序怎么制作...

  • 幸运大转盘

    新年伊始,各种年会抽奖,那我们就来做一个简单版的大转盘,蹭一蹭节日的热闹气氛吧 效果如下: 所需素材如下: 我们开...

  • 小程序的大转盘活动怎么做?

    日常生活中最常见的抽奖活动莫过于大转盘抽奖了吧,无论线上线下。大转盘抽奖活动具有多样性、并可开展基于粘性维护的活动...

  • Flutter图片缓存控件

    yingzi_flutter_image_cache 非常简单易用的Flutter图片控件。 将当前Android...

  • uniapp的动画运用(一)旋转动画《抽奖大转盘》

    今天简单记录一下如何使用uni.createAnimation(OBJECT)来构建一个抽奖大转盘。效果如下图所示...

  • 微信小程序大转盘抽奖

    微信小程序大转盘抽奖 说明看到过太多骗点击量的大转盘抽奖,也写一个玩玩 需求 一个转盘界面 闪动的小点 奖品背景颜...

  • 连中三元

    幸运大转盘,抽奖领红包,雨露来听歌,胜利哒凯旋。

  • Flutter--常用的布局控件

    Flutter的控件 Flutter提供的控件非常多,都可以在Flutter Widget 索引中进行查看。 对于...

  • 抽奖

    今天早晨,打开简书,发现抽奖的大转盘没有了,不禁轻轻松了口气。 最近, 发现简书有个大转盘之后,几...

网友评论

      本文标题:Flutter 做一个简单的大转盘抽奖控件

      本文链接:https://www.haomeiwen.com/subject/odthkdtx.html