返回顶部
首页 > 资讯 > 精选 >Flutter中怎么使用AnimatedSwitcher实现场景切换动画
  • 611
分享到

Flutter中怎么使用AnimatedSwitcher实现场景切换动画

2023-06-29 16:06:27 611人浏览 薄情痞子
摘要

这篇文章主要介绍“Flutter中怎么使用AnimatedSwitcher实现场景切换动画”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Flutter中怎么使用AnimatedSwitcher实现场

这篇文章主要介绍“Flutter中怎么使用AnimatedSwitcher实现场景切换动画”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Flutter中怎么使用AnimatedSwitcher实现场景切换动画”文章能帮助大家解决问题。

AnimatedSwitcher 介绍

AnimatedSwitcher 通过动效完成其子组件的切换,默认的效果是 FadeTransition。当其子组件发生改变的时候,就会按设定的转变效果进行转换。AnimatedSwitcher的构造方法如下:

const AnimatedSwitcher({  Key? key,  this.child,  required this.duration,  this.reverseDuration,  this.switchInCurve = Curves.linear,  this.switchOutCurve = Curves.linear,  this.transitionBuilder = AnimatedSwitcher.defaultTransitionBuilder,  this.layoutBuilder = AnimatedSwitcher.defaultLayoutBuilder,})

与之前其他的动画组件不同,AnimatedSwitcher的参数除了 duration 之外,其他的有所不同,具体如下:

  • reverseDuration:反向时长,也就是切换为旧组件的时长,不设置的话就和 duration 一致。

  • switchInCurve:切入动画曲线,也就是新组件切换进入的曲线;

  • switchOutCurve:切出动画曲线,也就是旧组件切换出去时的曲线;

  • transitionBuilder:切换转变动画构建,是一个函数,定义如下,可以用这个方法来构建自己的切换动效。

typedef AnimatedSwitcherTransitionBuilder = Widget Function(Widget child, Animation<double> animation);
  • layoutBuilder:可以设置新组件在组件树中的布局,也是一个函数:

typedef AnimatedSwitcherLayoutBuilder = Widget Function(Widget? currentChild, List<Widget> previousChildren);

默认布局为 defaultLayoutBuilder,也就是将当前组件放置在最顶层:

static Widget defaultLayoutBuilder(Widget? currentChild, List<Widget> previousChildren) {  return Stack(    children: <Widget>[      ...previousChildren,      if (currentChild != null) currentChild,    ],    alignment: Alignment.center,  );}

关于AnimatedSwitcher有一个地方需要特别注意,那就是如果切换的两个组件相同的话,AnimatedSwitcher会以为组件没有改变,而不会进行动效切换。文档说明如下:

The child is considered to be "new" if it has a different type or [Key]

实际上是根据 Widget 的 canUpdate 判断的:

static int _debuGConcreteSubtype(Widget widget) {  return widget is StatefulWidget ? 1 :         widget is StatelessWidget ? 2 :         0;}

因此,如果两个组件类型相同,需要使用不同的 Key 来区分,通常是使用 ValueKey

应用

下面我们来实现开篇的动效,这个使用的是 SizeTransition 尺寸变化转变动效完成两张图片的切换,这样会让组件的尺寸从小变到大,有一种掀开面纱的感觉。代码如下:

class AnimatedSwitcherDemo extends StatefulWidget {  AnimatedSwitcherDemo({Key? key}) : super(key: key);  @override  _AnimatedSwitcherDemoState createState() => _AnimatedSwitcherDemoState();}class _AnimatedSwitcherDemoState extends State<AnimatedSwitcherDemo> {  Widget? _animatedWidget;  bool test = false;  @override  void initState() {    super.initState();    _animatedWidget = ClipOval(      child: Image.asset('images/beauty.jpeg'),      key: ValueKey(1),    );  }  @override  Widget build(BuildContext context) {    return Scaffold(      appBar: AppBar(        title: Text('AnimatedSwticher'),        brightness: Brightness.dark,        backgroundColor: Colors.black,      ),      backgroundColor: Colors.black,      body: Center(        child: Container(          padding: EdgeInsets.all(10.0),          child: AnimatedSwitcher(            child: _animatedWidget,            duration: const Duration(milliseconds: 1000),            transitionBuilder: (child, animation) {              return SizeTransition(                sizeFactor: animation,                child: child,              );            },          ),        ),      ),      floatingActionButton: FloatingActionButton(        child: Icon(Icons.play_arrow),        onPressed: () {          setState(() {            test = !test;            _animatedWidget = test                ? ClipOval(                    child: Image.asset('images/beauty2.jpeg'),                    key: ValueKey(2),                  )                : ClipOval(                    child: Image.asset('images/beauty.jpeg'),                    key: ValueKey(1),                  );          });        },      ),    );  }}

关于“Flutter中怎么使用AnimatedSwitcher实现场景切换动画”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Flutter中怎么使用AnimatedSwitcher实现场景切换动画

本文链接: https://lsjlt.com/news/325496.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Flutter使用AnimatedSwitcher实现场景切换动画
    目录前言AnimatedSwitcher 介绍应用总结前言 在应用中,我们经常会遇到切换组件的场景,比如点击一个按钮后,将当前的图片为另一张图片;或者是翻转卡片,显示卡片详情。在 F...
    99+
    2024-04-02
  • Flutter中怎么使用AnimatedSwitcher实现场景切换动画
    这篇文章主要介绍“Flutter中怎么使用AnimatedSwitcher实现场景切换动画”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Flutter中怎么使用AnimatedSwitcher实现场...
    99+
    2023-06-29
  • Flutter 用自定义转场动画实现页面切换
    目录旋转转场动画 缩放转场动画 自定义转场动画 运行效果 fluro 转场动画源码 在使用自定义转场动画前,先扒一扒 fluro 的源码,通过源码可以发现这么一个标准的转场方法: ...
    99+
    2024-04-02
  • Android Flutter实现页面切换转场动画效果
    目录前言Hero 动画过程Hero 基础示例总结前言 写了一篇基础的性能优化的内容,继续我们的动画相关的介绍。今天的主角是英雄 —— Hero 组件。H...
    99+
    2022-06-07
    flutter 动画 Android
  • Flutter 使用fluro的转场动画进行页面切换
    目录转场形式 设定页面默认转场方式 跳转时指定转场方式 总结 在 fluro 中,定义路由处理器 Handler 时可以指定该页面的默认转场形式,或者在使用 navigateTo 方...
    99+
    2024-04-02
  • vue怎么实现背景淡入淡出切换动画
    这篇文章主要介绍“vue怎么实现背景淡入淡出切换动画”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue怎么实现背景淡入淡出切换动画”文章能帮助大家解决问题。安装好vuejs之后,在componen...
    99+
    2023-07-04
  • Flutter中怎么使用AnimatedOpacity实现图片渐现动画
    今天小编给大家分享一下Flutter中怎么使用AnimatedOpacity实现图片渐现动画的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起...
    99+
    2023-06-29
  • Android Compose页面切换动画怎么实现
    这篇文章主要介绍“Android Compose页面切换动画怎么实现”,在日常操作中,相信很多人在Android Compose页面切换动画怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android...
    99+
    2023-06-22
  • 怎么使用Flutter StrikeThroughTextAnimation实现文字中划线动画
    这篇文章主要介绍“怎么使用Flutter StrikeThroughTextAnimation实现文字中划线动画”,在日常操作中,相信很多人在怎么使用Flutter StrikeThroughTextAnimation实现文字中划线动画问题...
    99+
    2023-07-05
  • 怎么使用纯CSS代码实现切换按钮时背景的悬停动画效果
    这篇文章主要介绍了怎么使用纯CSS代码实现切换按钮时背景的悬停动画效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   代码解读   ...
    99+
    2024-04-02
  • Flutter使用AnimatedOpacity实现图片渐现动画
    目录前言AnimatedOpacity 简介AnimatedOpacity 应用图片渐现过渡总结前言 我们介绍了几篇 Flutter 的动画控制类,相信大家对动画也有了一定的了解,可...
    99+
    2024-04-02
  • 如何使用CSS实现outline切换的动画效果
    这篇文章主要介绍“如何使用CSS实现outline切换的动画效果”,在日常操作中,相信很多人在如何使用CSS实现outline切换的动画效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • Android开场动画怎么实现
    要实现Android开场动画,可以使用以下方法:1. 使用帧动画(Frame Animation):创建一个包含多个帧图片的动画资源...
    99+
    2023-08-08
    Android
  • android转场动画怎么实现
    要实现Android转场动画,可以使用Android提供的转场动画框架或自定义转场动画。1. 使用Android转场动画框架:- 在...
    99+
    2023-08-17
    android
  • HTML5+CSS3怎么实现灵动的动画TAB切换效果
    这篇文章将为大家详细讲解有关HTML5+CSS3怎么实现灵动的动画TAB切换效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。设计师给了一个 tab 切换的效果图。虽然是一个很小的功能,但是前端工程师在实...
    99+
    2023-06-08
  • CSS中怎么实现多重背景动画
    CSS中怎么实现多重背景动画,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。CSS代码给一个页面元素设置多个背景图片,这种技术很早就可行了,你只...
    99+
    2024-04-02
  • 怎么使用Javascript的if语句实现背景色切换
    本文小编为大家详细介绍“怎么使用Javascript的if语句实现背景色切换”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Javascript的if语句实现背景色切换”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-06
  • Flutter在项目中使用动画不使用包实现详解
    目录前言正文1 按下按钮柔软的感觉2 想要一个像 Instagram 一样的喜欢按钮吗?3 动画页面过渡4 动画文字5 更改/闪动文本样式前言 动画对于 web 和移动应用程序都非常...
    99+
    2022-11-21
    Flutter项目动画使用 Flutter 动画
  • 使用Canvas怎么实现鼠标跟随动画背景
    本篇文章给大家分享的是有关使用Canvas怎么实现鼠标跟随动画背景,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。如何制作动画常用的绘图动画的方式有以下几种:CSS3SVGCan...
    99+
    2023-06-09
  • 使用canvas怎么实现一个粒子动画背景
    使用canvas怎么实现一个粒子动画背景?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。创建canvas首先需要在需要展示粒子背景的父元素中创建一个canvas标签, 指定wid...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作