Flutter动画库:animations(路由过渡动画或者页面切换动画)

这篇具有很好参考价值的文章主要介绍了Flutter动画库:animations(路由过渡动画或者页面切换动画)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

animations

animations 是一个 Flutter 库,它提供了一组用于创建动画效果的工具和组件。这个库的核心重点是路由过渡动画或者页面切换动画

地址
https://pub-web.flutter-io.cn/packages/animations

安装

flutter pub add animations

看了下官方文档和官方例子,然后就有点懵。差点以为找错库了。还好flutter中的库可以直接点开(ctrl+鼠标右键)查看源码

点开:import 'package:animations/animations.dart';,可以看到有以下几个文件
Flutter动画库:animations(路由过渡动画或者页面切换动画),dart 和 Flutter,flutter
modal.dart用不到,另外几个就是官方提供给我们的动画。下面一块看一下,以下都是使用的默认配置,记得引入下面这个包

`import 'package:animations/animations.dart';`

fade_scale_transition

Center(
  child: ElevatedButton(
onPressed: () {
  showModal(
      context: context,
      // 配置
      configuration: const FadeScaleTransitionConfiguration(),
      builder: (context) {
        return const Center(
          child: SizedBox(
            width: 250,
            height: 250,
            child: Material(
              child: Center(
                child: FlutterLogo(size: 250),
              ),
            ),
          ),
        );
      });
},
child: const Text("打开弹窗"),
));

Flutter动画库:animations(路由过渡动画或者页面切换动画),dart 和 Flutter,flutter

fade_through_transition

这个是一个路由切换动画

MaterialApp(
      theme: ThemeData(
          // 设置页面过渡主题
          pageTransitionsTheme: const PageTransitionsTheme(builders: {
        TargetPlatform.android: FadeThroughPageTransitionsBuilder(),
        TargetPlatform.iOS: FadeThroughPageTransitionsBuilder(),
      })),
      // 路由
      routes: {
        '/': (BuildContext context) {
          return Container(
            color: Colors.red,
            child: Center(
              child: TextButton(
                child: const Text('Push route'),
                onPressed: () {
                  Navigator.of(context).pushNamed('/a');
                },
              ),
            ),
          );
        },
        '/a': (BuildContext context) {
          return Container(
            color: Colors.blue,
            child: Center(
              child: TextButton(
                child: const Text('Pop route'),
                onPressed: () {
                  Navigator.of(context).pop();
                },
              ),
            ),
          );
        },
      },
      // home: YcHomePage(),
    );

Flutter动画库:animations(路由过渡动画或者页面切换动画),dart 和 Flutter,flutter

open_container

这个还是很不错的

Center(
        child: OpenContainer(
      transitionDuration: const Duration(milliseconds: 500),
      // 打开状态
      openBuilder: (BuildContext context, VoidCallback _) {
        return const SecondPage();
      },
      // 闭合状态
      closedBuilder: (BuildContext context, VoidCallback openContainer) {
        return GestureDetector(
          onTap: openContainer,
          child: Container(
            width: 200,
            height: 200,
            color: Colors.blue,
            child: const Center(
              child: Text(
                'Tap to Open',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 20,
                ),
              ),
            ),
          ),
        );
      },
    ));
class SecondPage extends StatelessWidget {
  const SecondPage({Key? key}) : super(key: key);

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Second Page'),
      ),
      body: const Center(
        child: Text(
          'Second Page',
          style: TextStyle(
            fontSize: 24,
            fontWeight: FontWeight.bold,
          ),
        ),
      ),
    );
  }
}

Flutter动画库:animations(路由过渡动画或者页面切换动画),dart 和 Flutter,flutter

page_transition_switcher

可以用于在不同页面之间实现平滑的过渡动画。它可以让我们在切换页面时应用自定义的过渡效果,比如淡入淡出、滑动、缩放等。


// 创建一个PageTransitionSwitcher组件,并将需要切换的页面作为其子组件。
class SwitcherContainer extends StatefulWidget {
  const SwitcherContainer({Key? key}) : super(key: key);

  
  _SwitcherContainerState createState() => _SwitcherContainerState();
}

class _SwitcherContainerState extends State<SwitcherContainer> {
  int _pageIndex = -1;

  
  Widget build(BuildContext context) {
    return PageTransitionSwitcher(
      // 过渡时间
      duration: const Duration(milliseconds: 500),
      // 过渡构建函数,还有其他的构建函数具体见源码
      transitionBuilder: (child, animation, secondaryAnimation) {
        return FadeThroughTransition(
          animation: animation,
          secondaryAnimation: secondaryAnimation,
          child: child,
        );
      },
      child: _getPage(_pageIndex),
    );
  }

  Widget _getPage(int index) {
    switch (index) {
      case 0:
        return const FirstPage();
      default:
        return Center(
          child: ElevatedButton(
              onPressed: () {
                setState(() {
                  _pageIndex = 0;
                });
              },
              child: const Text("跳转")),
        );
    }
  }
}

class FirstPage extends StatelessWidget {
  const FirstPage({Key? key}) : super(key: key);

  
  Widget build(BuildContext context) {
    return const Scaffold(
      body: Center(
        child: Text(
          'Second Page',
          style: TextStyle(
            fontSize: 24,
            fontWeight: FontWeight.bold,
          ),
        ),
      ),
    );
  }
}

这里写的例子不太合适,正常应该是跑马灯那样进行切换。
Flutter动画库:animations(路由过渡动画或者页面切换动画),dart 和 Flutter,flutter

shared_axis_transition

SharedAxisPageTransitionsBuilderanimations库中的一个过渡构建器,它可以在页面之间应用共享坐标轴的过渡动画效果。它提供了三个不同的过渡类型:SharedAxisTransitionType.scaledSharedAxisTransitionType.horizontalSharedAxisTransitionType.vertical,分别表示缩放、水平和垂直方向的过渡效果。

这个也是一个路由过渡动画

class MyApp extends StatelessWidget {
  //创建widget的唯一标识
  const MyApp({Key? key}) : super(key: key);
  //重写build方法
  
  Widget build(BuildContext context) {
    // ChangeNotifierProvider 会返回一个 ChangeNotifier 对象,它允许消费者在 CounterState 对象发生变化时收到通知。
    return MaterialApp(
      home: const YcHomePage(),
      theme: ThemeData(
          pageTransitionsTheme: const PageTransitionsTheme(builders: {
        TargetPlatform.android: SharedAxisPageTransitionsBuilder(
          transitionType: SharedAxisTransitionType.scaled,
        ),
        TargetPlatform.iOS: SharedAxisPageTransitionsBuilder(
          transitionType: SharedAxisTransitionType.scaled,
        ),
      })),
    );
  }
}

Flutter动画库:animations(路由过渡动画或者页面切换动画),dart 和 Flutter,flutter文章来源地址https://www.toymoban.com/news/detail-601338.html

到了这里,关于Flutter动画库:animations(路由过渡动画或者页面切换动画)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 回到页面顶部(回到顶部、过渡动画)

    项目背景: vue 1.创建 backtop.vue 的回到顶部逻辑的组件 2.在相应的组件位置进行引用 进行组件封装 可以与业务代码进行解耦,预留插槽位置可以保留外部的样式定制化,预留外部api的定制化操作。

    2024年02月05日
    浏览(43)
  • flutter开发实战-Stagger Animation实现水波纹动画

    flutter开发实战-实现水波纹动画,使用到了交织动画,实现三个圆逐渐放大与渐变的过程。 实现水波纹动画,使用到了交织动画,实现三个圆逐渐放大与渐变的过程。 交织动画 有些时候我们可能会需要一些复杂的动画,这些动画可能由一个动画序列或重叠的动画组成。一个

    2024年02月15日
    浏览(42)
  • 【Flutter】【packages】simple_animations 简单的实现动画

    导入包到项目中去 可以实现简单的动画, 快速实现,不需要自己过多的设置 有多种样式可以实现 [ ] 简单的用例:具体需要详细可以去 pub 链接地址 1. PlayAnimationBuilder 新增child 参数,静态的child ,减少资源的浪费,其他的build 同样可以这样使用 2.LoopAnimationBuilder 循环动画 该用

    2024年02月13日
    浏览(33)
  • 【Anime.js】——JavaScript动画库:Anime.js——学习笔记

    目录 一、搭建开发环境  二、基本功能和使用 开始制作动画 动画属性 三、anime.stagger——交错动画 四、timeline——时间轴  五、控制、回调与助手 一、控制  二、回调 三、助手 六、easings——动画运动曲线 七、SVG动画 官网定义: anime.js 是一个简便的JS动画库,用法简单而

    2024年02月01日
    浏览(41)
  • 👾 笔记 | react-transition-group 实现路由切换过渡动画

    React 18 React router v6 React Transition Group 是一个 React 库,专门用于在 React 应用中管理和处理过渡动画效果。这个库提供了一组组件,包括 Transition、CSSTransition、SwitchTransition 和 TransitionGroup,帮助在组件的进入和退出时应用动画效果。 Transition 是一个与平台无关的组件,通常结合

    2024年03月09日
    浏览(66)
  • vue transition结合animate.css动画库

    安装 npm install animate.css --save 在main.js中引用 import animated from \\\'animate.css\\\' Vue.use(animated) 在transition标签上使用 此处有坑:4.x版本的animate在使用的时候要在动画名称加前缀animate__动画名 ,其他版本的不用直接使用动画名称就行 在某一项被插入或者移出时,它周围的元素会立即发

    2024年02月20日
    浏览(40)
  • Flutter 动画(显式动画、隐式动画、Hero动画、页面转场动画、交错动画)

    当前案例 Flutter SDK版本: 3.13.2 Tween({this.begin,this.end})  两个构造参数,分别是  开始值 和 结束值 ,根据这两个值,提供了控制动画的方法,以下是常用的; controller.forward()   :   向前,执行 begin 到 end 的动画,执行结束后,处于end状态; controller.reverse()   :   反向,当动画

    2024年02月20日
    浏览(48)
  • flutter 启动其他app server或者页面失败

    1.目标Service 设置  android:exported=\\\"true\\\" 2.目标Service需要声明自定义权限。客户端需要声明权限。 3.目标Service需要添加 intent-filter/intent-filter 检查以上的声明和权限, 如果还是不行 说明是 Android 11引入了* 包可见性 *’ Solve方案 方案一: queries         //你要交互的service的包名

    2024年02月01日
    浏览(56)
  • Flutter之自定义路由切换动画

    在Flutter中,我们可以通过Navigator来实现路由管理,包括路由的跳转和返回等。默认情况下,Flutter提供了一些简单的路由切换动画,但是有时候我们需要自定义一些特殊的动画效果来提高用户体验。本文将介绍如何在Flutter中实现自定义的路由切换动画。 在Flutter中,路由切换

    2024年02月10日
    浏览(37)
  • flutter系列之:如何自定义动画路由

    目录 简介 自定义跳转使用 flutter动画基础 实现一个自定义的route 总结 flutter中有默认的Route组件,叫做MaterialPageRoute,一般情况下我们在flutter中进行跳转的话,只需要向Navigator中传入一个MaterialPageRoute就可以了。 但是MaterialPageRoute太普通了,如果我们想要做点不同的跳转特效

    2023年04月19日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包