Flutter页面过渡动画插件transitioner的使用

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

Flutter页面过渡动画插件transitioner的使用

标题

Transitioner Package

内容

这个包帮助管理不同视图/页面之间的过渡。我将添加更多类型的过渡,敬请关注。

开始使用

在您的Flutter项目中,添加以下依赖项:

dependencies:
  transitioner: ^0.1.0

示例代码

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Material App',
      initialRoute: 'uno',
      routes: {
        'uno': (_) => UnoPage(),
        'dos': (_) => DosPage(),
      },
    );
  }
}

class UnoPage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.blue,
      appBar: AppBar(
        actions: [],
        title: Text('Page Uno'),
        backgroundColor: Colors.transparent,
      ),
      body: Center(
        child: MaterialButton(
          onPressed: () {
            Transitioner(
              context: context,
              child: DosPage(),
              animation: AnimationType.scale,
              duration: Duration(milliseconds: 500),
              replacement: true,
              curveType: CurveType.bounceOut,
            );
          },
          color: Colors.white,
          child: Text('Go to Page Dos'),
        ),
      ),
    );
  }
}

class DosPage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.orange,
      appBar: AppBar(
        actions: [],
        title: Text('Page Dos'),
        backgroundColor: Colors.transparent,
      ),
      body: Center(
        child: MaterialButton(
          onPressed: () {
            Transitioner(
              context: context,
              child: UnoPage(),
              animation: AnimationType.normal,
              duration: Duration(milliseconds: 2000),
              replacement: true,
              curveType: CurveType.decelerate,
            );
          },
          color: Colors.white,
          child: Text('Go to Page Uno'),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用transitioner插件来实现页面过渡动画的示例代码。

首先,你需要在你的pubspec.yaml文件中添加transitioner依赖项:

dependencies:
  flutter:
    sdk: flutter
  transitioner: ^x.y.z  # 请使用最新版本号替换 x.y.z

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

以下是一个简单的示例,展示了如何使用transitioner插件在两个页面之间进行过渡动画:

主页面(main.dart)

import 'package:flutter/material.dart';
import 'package:transitioner/transitioner.dart';
import 'second_page.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Transitioner Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Transitioner Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.push(
              context,
              TransitionerPageRoute(
                builder: (context) => SecondPage(),
                transition: (
                  context,
                  animation,
                  secondaryAnimation,
                  child,
                ) {
                  return SlideTransition(
                    position: Tween<Offset>(
                      begin: Offset(1.0, 0.0),
                      end: Offset(0.0, 0.0),
                    ).animate(animation),
                    child: child,
                  );
                },
              ),
            );
          },
          child: Text('Go to Second Page'),
        ),
      ),
    );
  }
}

第二页面(second_page.dart)

import 'package:flutter/material.dart';

class SecondPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Second Page'),
      ),
      body: Center(
        child: Text('This is the second page!'),
      ),
    );
  }
}

自定义过渡动画

在上述代码中,我们使用了TransitionerPageRouteSlideTransition来实现一个简单的从右向左滑动过渡动画。你可以根据需求自定义过渡动画,例如使用FadeTransitionRotationTransition等。

例如,如果你想实现一个淡入淡出的过渡效果,你可以修改transition函数中的代码:

transition: (
  context,
  animation,
  secondaryAnimation,
  child,
) {
  return FadeTransition(
    opacity: Tween<double>(begin: 0.0, end: 1.0).animate(animation),
    child: child,
  );
},

这样,当你点击按钮跳转到第二个页面时,将会看到一个淡入的效果。

注意事项

  • transitioner插件的具体API和使用方式可能会随着版本更新而变化,请查阅最新的官方文档。
  • 确保你的Flutter环境已经正确配置,并且所有依赖项都已正确安装。

希望这个示例代码能帮助你理解如何在Flutter项目中使用transitioner插件来实现页面过渡动画。

回到顶部