Flutter页面动画切换插件animated_page_reveal的使用
Flutter页面动画切换插件animated_page_reveal的使用
动画页面揭示插件简介
AnimatedPageReveal
插件允许你在 Flutter 应用中添加一个动画页面揭示效果,展示一组带有你所需内容的页面。默认情况下,内容的位置设置为 Center
,通过使用 ViewPageModel
,你可以添加任意数量的页面,并自定义每个页面的内容。
特性
- 动画页面:通过在屏幕上拖动(从左到右或从右到左),一个页面淡出,另一个页面以酷炫的动画淡入。
- 底部图标:底部图标指示当前激活页面的位置以及剩余可见和不可见的页面,供用户交互。
示例代码
import 'package:animated_page_reveal/animated_page_reveal.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// 这个 widget 是是你的应用根节点。
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return SizedBox(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: AnimatedPageReveal(children: [
PageViewModel(
title: 'Choose your place',
description:
'Pick the right destination according to the season because it is a key factor for a successful trip',
color: const Color(0xff15932),
imageAssetPath: 'assets/images/trip.png',
iconAssetPath: 'assets/images/placeicon.png',
titleStyle: const TextStyle(
fontFamily: 'Montserrat',
fontSize: 18,
fontWeight: FontWeight.bold,
color: Colors.white,
),
descriptionStyle: const TextStyle(
fontFamily: 'Montserrat',
fontSize: 14,
fontWeight: FontWeight.normal,
color: Colors.white,
),
),
PageViewModel(
title: 'Book your flight',
description:
'Found a flight that matches your destination and schedule? \nBook it just a few taps',
color: const Color(0xff19594E),
imageAssetPath: 'assets/images/flight.png',
iconAssetPath: 'assets/images/planicon.png',
titleStyle: const TextStyle(
fontFamily: 'Montserrat',
fontSize: 18,
fontWeight: FontWeight.bold,
color: Colors.white,
),
descriptionStyle: const TextStyle(
fontFamily: 'Montserrat',
fontSize: 14,
fontWeight: FontWeight.normal,
color: Colors.white,
),
),
PageViewModel(
title: 'Explore the world',
description:
'Easily discover new places and share them with your friends. \nMaybe you will plan together your next trip?',
color: const Color(0xff193A59),
imageAssetPath: 'assets/images/explore.png',
iconAssetPath: 'assets/images/searchicon.png',
titleStyle: const TextStyle(
fontFamily: 'Montserrat',
fontSize: 18,
fontWeight: FontWeight.bold,
color: Colors.white,
),
descriptionStyle: const TextStyle(
fontFamily: 'Montserrat',
fontSize: 14,
fontWeight: FontWeight.normal,
color: Colors.white,
),
),
]),
);
}
}
使用说明
-
添加最新版本的包到
pubspec.yaml
文件中(并运行dart pub get
):dependencies: animated_page_reveal: ^1.0.0
-
导入包并在应用中使用:
import 'package:animated_page_reveal/animated_page_reveal.dart';
示例演示
Here's what it looks like:
<a href="https://user-images.githubusercontent.com/68671238/135723767-a464d5e3-2a88-4e10-b64d-af652be23ff.mp4" rel="ugc">https://user-images.githubusercontent.com/68671238/135723767-a424d5e3-2a88-4e10-b64d-af652be273ff.mp4</a>
更多关于Flutter页面动画切换插件animated_page_reveal的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter页面动画切换插件animated_page_reveal的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,animated_page_reveal
是一个用于在 Flutter 应用中实现页面之间动画切换效果的插件。它允许开发者在导航到新页面时,以动画的形式展示新页面的内容,从而增强用户体验。
以下是一个使用 animated_page_reveal
插件的简单示例,包括安装插件、配置路由和创建动画切换效果的代码。
1. 安装插件
首先,在 pubspec.yaml
文件中添加 animated_page_reveal
依赖:
dependencies:
flutter:
sdk: flutter
animated_page_reveal: ^0.1.2 # 请检查最新版本号
然后运行 flutter pub get
来获取依赖。
2. 配置路由
在你的 Flutter 应用中,配置路由以使用 AnimatedPageReveal
。以下是一个简单的示例,展示如何设置路由:
import 'package:flutter/material.dart';
import 'package:animated_page_reveal/animated_page_reveal.dart';
import 'page_one.dart'; // 假设这是你的第一个页面
import 'page_two.dart'; // 假设这是你的第二个页面
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
onGenerateRoute: (RouteSettings settings) {
switch (settings.name) {
case '/':
return MaterialPageRoute(builder: (context) => PageOne());
case '/pageTwo':
return AnimatedPageRevealRoute(
builder: (context) => PageTwo(),
// 你可以根据需要配置动画参数
animationType: AnimatedPageRevealType.slideFromRight, // 动画类型
duration: Duration(milliseconds: 500), // 动画时长
);
default:
return MaterialPageRoute(builder: (context) => Scaffold(body: Center(child: Text('404'))));
}
},
initialRoute: '/',
);
}
}
3. 创建页面
接下来,创建两个简单的页面 PageOne
和 PageTwo
。
page_one.dart
:
import 'package:flutter/material.dart';
class PageOne extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Page One'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.pushNamed(context, '/pageTwo');
},
child: Text('Go to Page Two'),
),
),
);
}
}
page_two.dart
:
import 'package:flutter/material.dart';
class PageTwo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Page Two'),
),
body: Center(
child: Text('Welcome to Page Two!'),
),
);
}
}
4. 运行应用
现在,你可以运行你的 Flutter 应用。当你点击 PageOne
页面上的按钮时,应该会看到 PageTwo
页面以动画形式从右侧滑入。
这个示例展示了如何使用 animated_page_reveal
插件来实现页面之间的动画切换。你可以根据需要调整动画类型、时长等参数,以达到你想要的视觉效果。