Flutter页面过渡效果插件page_transition_effects的使用
Flutter页面过渡效果插件page_transition_effects的使用
零依赖的空安全插件(Dart 3)
支持iOS、Android、Linux、Mac、Web和Windows平台。
简介
page_transition_effects
插件提供了美观的页面过渡动画效果。它支持多种过渡类型,并且可以实现页面替换 (PushReplacement
) 功能。
快速入门
此插件非常简单易用。每个动画都包含默认值,这些默认值看起来非常美观。当然,你也可以根据需要修改属性来定制过渡效果。
支持的动画类型
FadeIn
SlideUp
SlideDown
SlideLeft
SlideRight
示例代码
基本示例
// 在main.dart文件中定义主应用
import 'package:flutter/material.dart';
import 'package:page_transition_effects/page_transition_effects.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// 主应用入口
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: '页面过渡效果演示',
theme: ThemeData.dark(),
home: const MyFirstPage(),
);
}
}
class MyFirstPage extends StatelessWidget {
const MyFirstPage({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
return Scaffold(
backgroundColor: Colors.blueGrey,
body: SizedBox(
width: size.width,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'我的第一个页面',
style: Theme.of(context).textTheme.headlineMedium,
),
SizedBox(
height: size.height * 0.1,
),
ElevatedButton(
onPressed: () => PageTransitionEffects(
context: context,
page: const MySecondPage(),
animation: AnimationType.slideUp,
duration: const Duration(milliseconds: 800),
),
child: const Text('正常跳转'),
),
SizedBox(
height: size.height * 0.1,
),
ElevatedButton(
onPressed: () => PageTransitionEffects(
context: context,
page: const MyThirdPage(),
animation: AnimationType.slideDown,
duration: const Duration(milliseconds: 800),
replacement: true,
),
child: const Text('页面替换'),
)
],
),
),
);
}
}
class MySecondPage extends StatelessWidget {
const MySecondPage({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.brown,
appBar: AppBar(
title: const Text('启用返回按钮'),
backgroundColor: Colors.transparent,
),
body: Center(
child: Text(
'我的第二个页面',
style: Theme.of(context).textTheme.headlineMedium,
),
),
);
}
}
class MyThirdPage extends StatelessWidget {
const MyThirdPage({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.deepPurple,
appBar: AppBar(
title: const Text('禁用返回按钮'),
backgroundColor: Colors.transparent,
),
body: Center(
child: Text(
'我的第三个页面(禁用返回按钮)',
style: Theme.of(context).textTheme.headlineMedium,
),
),
);
}
}
更多关于Flutter页面过渡效果插件page_transition_effects的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter页面过渡效果插件page_transition_effects的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
page_transition_effects
是一个 Flutter 插件,用于在页面导航时添加各种过渡效果。它提供了多种内置的过渡效果,如淡入淡出、缩放、滑动等,可以帮助你创建更加流畅和有趣的页面切换体验。
安装插件
首先,你需要在 pubspec.yaml
文件中添加 page_transition_effects
插件的依赖:
dependencies:
flutter:
sdk: flutter
page_transition_effects: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来安装插件。
使用插件
使用 page_transition_effects
插件非常简单。你可以在 Navigator.push
或 Navigator.pushReplacement
时使用 PageTransitionEffects
来指定过渡效果。
基本用法
import 'package:flutter/material.dart';
import 'package:page_transition_effects/page_transition_effects.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home Page'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.push(
context,
PageTransitionEffects(
child: SecondPage(),
transitionEffect: TransitionEffect.slideLeft, // 使用左侧滑动效果
),
);
},
child: Text('Go to Second Page'),
),
),
);
}
}
class SecondPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Second Page'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.pop(context);
},
child: Text('Go Back'),
),
),
);
}
}
支持的过渡效果
PageTransitionEffects
提供了多种内置的过渡效果,你可以通过 transitionEffect
参数来指定:
TransitionEffect.fade
: 淡入淡出效果TransitionEffect.scale
: 缩放效果TransitionEffect.slideLeft
: 左侧滑动效果TransitionEffect.slideRight
: 右侧滑动效果TransitionEffect.slideTop
: 顶部滑动效果TransitionEffect.slideBottom
: 底部滑动效果TransitionEffect.rotate
: 旋转效果TransitionEffect.size
: 大小变化效果
自定义过渡效果
你还可以通过 PageTransitionEffects.custom
来创建自定义的过渡效果。你需要提供一个 PageTransitionBuilder
来定义自定义的过渡动画。
Navigator.push(
context,
PageTransitionEffects.custom(
child: SecondPage(),
builder: (context, animation, secondaryAnimation, child) {
return FadeTransition(
opacity: animation,
child: ScaleTransition(
scale: Tween<double>(begin: 0.5, end: 1.0).animate(animation),
child: child,
),
);
},
),
);