Flutter路由过渡动画插件route_transition_yr的使用

Flutter路由过渡动画插件route_transition_yr的使用

这个包帮助实现路由之间的过渡动画。

使用示例

import 'package:route_transition_yr/route_transition_yr.dart';

RouteTransitions(
    context: context,  // BuildContext
    child: Page2Screen(), // Page Widget
    animation: AnimationType.fadeInUp, // 动画类型
    duration: const Duration(milliseconds: 900), // 动画时长
    alignment: Alignment.topLeft,
    replacement: true, 
);

完整示例Demo

main.dart

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

void main() => runApp(const MyApp());

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Material App',
      initialRoute: 'page1',
      routes: {
        'page1': (context) => const Page1(),
        'page2': (context) => const Page2(),
      },
      
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Page 1'),
        backgroundColor: Colors.transparent,
      ),
      backgroundColor: Colors.blue,
      body: Center(
        child: MaterialButton(
          color: Colors.white,
          child: const Text('Go to Page 2'),
          onPressed: () {
            // 路由过渡动画
            Navigator.of(context).push(
              RouteTransitions(
                context: context, 
                child: const Page2(),
                animation: AnimationType.fadeInUp,
                duration: const Duration(milliseconds: 900),
                replacement: true,
              ),
            );
          },
        ),
     ),
   );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Page 2'),
        backgroundColor: Colors.transparent,
      ),
      backgroundColor: Colors.blueGrey,
      body: const Center(
        child: Text('Page 2'),
     ),
   );
  }
}

更多关于Flutter路由过渡动画插件route_transition_yr的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter路由过渡动画插件route_transition_yr的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


route_transition_yr 是一个 Flutter 插件,用于简化路由过渡动画的实现。它提供了一种简单的方式来定义页面之间的过渡效果,而不需要手动编写复杂的动画代码。以下是如何使用 route_transition_yr 插件的步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 route_transition_yr 依赖:

dependencies:
  flutter:
    sdk: flutter
  route_transition_yr: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入包

在你的 Dart 文件中导入 route_transition_yr 包:

import 'package:route_transition_yr/route_transition_yr.dart';

3. 使用路由过渡动画

route_transition_yr 提供了多种过渡动画效果,你可以根据需要选择合适的效果。以下是一些常用的过渡动画示例:

3.1 渐隐渐现过渡

Navigator.push(
  context,
  RouteTransition(
    child: SecondPage(),
    transitionType: TransitionType.fade,
    duration: Duration(milliseconds: 500),
  ),
);

3.2 滑动过渡

Navigator.push(
  context,
  RouteTransition(
    child: SecondPage(),
    transitionType: TransitionType.slide,
    slideTransitionDirection: SlideTransitionDirection.rightToLeft,
    duration: Duration(milliseconds: 500),
  ),
);

3.3 缩放过渡

Navigator.push(
  context,
  RouteTransition(
    child: SecondPage(),
    transitionType: TransitionType.scale,
    duration: Duration(milliseconds: 500),
  ),
);

3.4 旋转过渡

Navigator.push(
  context,
  RouteTransition(
    child: SecondPage(),
    transitionType: TransitionType.rotate,
    duration: Duration(milliseconds: 500),
  ),
);

4. 自定义过渡动画

如果你需要更复杂的过渡效果,可以通过 RouteTransitionpageBuildertransitionsBuilder 参数来自定义过渡动画。

Navigator.push(
  context,
  RouteTransition(
    child: SecondPage(),
    transitionsBuilder: (context, animation, secondaryAnimation, child) {
      return FadeTransition(
        opacity: animation,
        child: child,
      );
    },
    duration: Duration(milliseconds: 500),
  ),
);

5. 退出页面

你可以使用 Navigator.pop 来退出页面,并使用相同的过渡效果。

Navigator.pop(context);
回到顶部