Flutter数字切换动画实现示例详解

 更新时间:2023年08月03日 10:27:57   作者:龙之音  
这篇文章主要为大家介绍了Flutter数字切换动画实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

效果

需求

  • 数字切换时新数字从上往下进入,上个数字从上往下出
  • 新数字进入时下落到位置并带有回弹效果
  • 上个数字及新输入切换时带有透明度和缩放动画

实现

AnimatedSwitcher

主要采用AnimatedSwitcher实现需求,代码比较简单,直接撸

import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter_xy/widgets/xy_app_bar.dart';
class NumAnimPage extends StatefulWidget {
  const NumAnimPage({super.key});
  @override
  State<NumAnimPage> createState() => _NumAnimPageState();
}
class _NumAnimPageState extends State<NumAnimPage> {
  int _currentNum = 0;
  // 数字文本随机颜色
  Color get _numColor {
    Random random = Random();
    int red = random.nextInt(256);
    int green = random.nextInt(256);
    int blue = random.nextInt(256);
    return Color.fromARGB(255, red, green, blue);
  }
  // 数字累加
  void _addNumber() {
    setState(() {
      _currentNum++;
    });
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: XYAppBar(
        title: "数字动画",
      ),
      body: Center(
        child: _bodyWidget(),
      ),
    );
  }
  Widget _bodyWidget() {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        AnimatedSwitcher(
          duration: const Duration(milliseconds: 500),
          transitionBuilder: (Widget child, Animation<double> animation) {
            Offset startOffset = animation.status == AnimationStatus.completed
                ? const Offset(0.0, 1.0)
                : const Offset(0.0, -1.0);
            Offset endOffset = const Offset(0.0, 0.0);
            return SlideTransition(
              position: Tween(begin: startOffset, end: endOffset).animate(
                CurvedAnimation(parent: animation, curve: Curves.bounceOut),
              ),
              child: FadeTransition(
                opacity: Tween(begin: 0.0, end: 1.0).animate(
                  CurvedAnimation(parent: animation, curve: Curves.linear),
                ),
                child: ScaleTransition(
                  scale: Tween(begin: 0.5, end: 1.0).animate(
                    CurvedAnimation(parent: animation, curve: Curves.linear),
                  ),
                  child: child,
                ),
              ),
            );
          },
          child: Text(
            '$_currentNum',
            key: ValueKey<int>(_currentNum),
            style: TextStyle(fontSize: 100, color: _numColor),
          ),
        ),
        const SizedBox(height: 80),
        ElevatedButton(
          onPressed: _addNumber,
          child: const Text(
            '数字动画',
            style: TextStyle(fontSize: 25, color: Colors.white),
          ),
        ),
      ],
    );
  }
}

具体见github:github.com/yixiaolunhui/flutter_xy

以上就是Flutter数字切换动画实现示例详解的详细内容,更多关于Flutter数字切换动画的资料请关注脚本之家其它相关文章!

相关文章

  • Android自定义圆弧进度条加数字动态变化

    Android自定义圆弧进度条加数字动态变化

    这篇文章主要为大家详细介绍了Android自定义圆弧进度条加数字动态变化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • 一文详解在Android中Service和AIDL的使用

    一文详解在Android中Service和AIDL的使用

    Service是Android四大组件之一,它是不依赖于用户界面的,就是因为Service不依赖与用户界面,本文将详细介绍在Android中Service和AIDL的使用,感兴趣的同学可以参考本文
    2023-04-04
  • Android EditText限制输入字符类型的方法总结

    Android EditText限制输入字符类型的方法总结

    这篇文章主要介绍了Android EditText限制输入字符类型的方法总结的相关资料,需要的朋友可以参考下
    2017-03-03
  • Android ListView物流获取追踪功能实现

    Android ListView物流获取追踪功能实现

    这篇文章主要介绍了Android ListView物流获取追踪功能实现的相关资料,需要的朋友可以参考下
    2016-03-03
  • Android中CountDownTimer 实现倒计时功能

    Android中CountDownTimer 实现倒计时功能

    本篇文章主要介绍了Android中CountDownTimer 实现倒计时功能,CountDownTimer 是android 自带的一个倒计时类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Android 实现旋转木马的音乐效果

    Android 实现旋转木马的音乐效果

    大家一定在百度音乐上在线听过歌,有没有注意到那个旋转的唱片,本篇文章主要介绍在Android上如何实现这样的功能,有需要的小伙伴可以参考下
    2016-07-07
  • Android Studio gradle配置packagingOptions打包so库重复

    Android Studio gradle配置packagingOptions打包so库重复

    这篇文章主要为大家介绍了Android Studio gradle配置packagingOptions打包so库重复问题的解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • ViewPager判断是向左划还是右划的实例

    ViewPager判断是向左划还是右划的实例

    下面小编就为大家带来一篇ViewPager判断是向左划还是右划的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Android自动拦截与接听功能APK黑白名单

    Android自动拦截与接听功能APK黑白名单

    大家好,本篇文章主要讲的是Android自动拦截与接听功能APK黑白名单,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2021-12-12
  • Kotlin比较与解释Lazy与Lateinit的用法

    Kotlin比较与解释Lazy与Lateinit的用法

    在使用kotlin开发中,因为各种原因,我们会经常需要使用到延迟加载的功能,目前kotlin的延迟加载主要有两种:lateinit和lazy,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
    2023-02-02

最新评论