美文网首页Flutter学习
Flutter 路由跳转动画效果

Flutter 路由跳转动画效果

作者: 叶秋_YQ | 来源:发表于2019-05-01 19:38 被阅读0次
缩放动画.gif 旋转动画.gif 左右动画.gif 渐变动画.gif

main

import 'package:flutter/material.dart';
import 'firstpage.dart';
main(){
  runApp(new MyApp());
}
class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
       title:'Flutter Demo',
      // 自定义主题样本
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: FirstPage(),
    );
  }
}

firstpage

import 'package:flutter/material.dart';
import 'custom_router.dart';

class FirstPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.blue,
      appBar:AppBar(
        title:Text('FirstPage',style: TextStyle(fontSize: 36.0)),
       // 模式是4.0设置成0.0是完全和main布局融合
        elevation: 0.0,
      ),
      body:Center(
        child: MaterialButton(
          child: Icon(
            Icons.navigate_next,
            color:Colors.white,
            size:64.0,
          ),
          // 点击开启路由
          onPressed: (){
                                  // 调用自定义的路由方法
             Navigator.of(context).push(CustomRoute(SecondPage()));
          },
        ),
      )
    );
  }
}
class SecondPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.pinkAccent,
      appBar: AppBar(
        title: Text('SecondPage',style:TextStyle(fontSize:36.0),),
        backgroundColor: Colors.pinkAccent,
        leading:Container(),
        elevation: 0.0,
      ),
      body:Center(
        child: MaterialButton(
          child: Icon(
            Icons.navigate_before,
            color:Colors.white,
            size:64.0
          ),
          onPressed: ()=>Navigator.of(context).pop(),
        ),
      )
    );
  }
}

自定义的custom_router

import 'package:flutter/material.dart';
class CustomRoute extends PageRouteBuilder{
  final Widget widget;

  CustomRoute(this.widget)
  :super(
    // 设置过度时间
    transitionDuration:Duration(seconds: 1),
    // 构造器
    pageBuilder:(
      // 上下文和动画
      BuildContext context,
      Animation<double> animaton1,
      Animation<double> animaton2,
    ){
      return widget;
    },
    transitionsBuilder:(
      BuildContext context,
      Animation<double> animaton1,
      Animation<double> animaton2,
      Widget child,
    ){
    
    // 需要什么效果把注释打开就行了
      // 渐变效果
      return FadeTransition(
        // 从0开始到1
        opacity: Tween(begin: 0.0,end: 1.0)
        .animate(CurvedAnimation(
          // 传入设置的动画
          parent: animaton1,
          // 设置效果,快进漫出   这里有很多内置的效果
          curve: Curves.fastOutSlowIn,
        )),
        child: child,
      );
      
      // 缩放动画效果
      // return ScaleTransition(
      //   scale: Tween(begin: 0.0,end: 1.0).animate(CurvedAnimation(
      //     parent: animaton1,
      //     curve: Curves.fastOutSlowIn
      //   )),
      //   child: child,
      // );

      // 旋转加缩放动画效果
      // return RotationTransition(
      //   turns: Tween(begin: 0.0,end: 1.0)
      //   .animate(CurvedAnimation(
      //     parent: animaton1,
      //     curve: Curves.fastOutSlowIn,
      //   )),
      //   child: ScaleTransition(
      //     scale: Tween(begin: 0.0,end: 1.0)
      //     .animate(CurvedAnimation(
      //       parent: animaton1,
      //       curve: Curves.fastOutSlowIn
      //     )),
      //     child: child,
      //   ),
      // );

      // 左右滑动动画效果
      // return SlideTransition(
      //   position: Tween<Offset>(
      //     // 设置滑动的 X , Y 轴
      //     begin: Offset(-1.0, 0.0),
      //     end: Offset(0.0,0.0)
      //   ).animate(CurvedAnimation(
      //     parent: animaton1,
      //     curve: Curves.fastOutSlowIn
      //   )),
      //   child: child,
      // );
    }
  );
}

相关文章

  • Flutter 路由跳转动画效果

    main firstpage 自定义的custom_router

  • Flutter 路由动画跳转

    Flutter路由介绍 Flutter里面有路由支持所有的路由场景,push、pop页面,页面间的参数传递等等。f...

  • Flutter 路由

    flutter 路由 页面跳转 在flutter中界面就是组件Flutter 中的路由通俗的讲就是页面跳转。在 F...

  • Flutter 15 - Navigator (路由)组件详解1

    一、Flutter 中的路由 Flutter 中的路由通俗的讲就是页面跳转。在 Flutter 中通过 Navig...

  • Flutter(十三):路由

    1 Flutter 中的路由 Flutter 中的路由通俗的讲就是页面跳转。在 Flutter 中通过 Navig...

  • Flutter之旅:路由导航

    这章来聊聊flutter的路由管理,也可以理解为页面导航,用来处理页面之间的跳转、参数传递、动画展示等功能。 路由...

  • Flutter 中的路由

    .路由定义 Flutter 中的路由通俗的讲就是页面跳转。在 Flutter 中通过 Navigator 组件管理...

  • Flutter - 页面跳转(路由)、传值

    Flutter 中页面跳转通过 Navigator 和 Route 来实现。 一、页面跳转 1,常规路由页面跳转...

  • Day13 - Flutter - 路由导航

    概述 路由管理 路由基本使用 命名路由使用(重点) 页面跳转的拓展 一、路由管理 1.1、认识Flutter路由路...

  • Flutter中的路由使用

    Flutter中提供了两种配置路由跳转的方式:1、基本路由;2、命名路由 一、基本路由 1.引入将要跳转的页面 2...

网友评论

    本文标题:Flutter 路由跳转动画效果

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