Flutter页面动画切换插件animated_page_reveal的使用

发布于 1周前 作者 caililin 来自 Flutter

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

1 回复

更多关于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. 创建页面

接下来,创建两个简单的页面 PageOnePageTwo

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 插件来实现页面之间的动画切换。你可以根据需要调整动画类型、时长等参数,以达到你想要的视觉效果。

回到顶部