Flutter动画效果插件fading_widget_animation的使用

Flutter动画效果插件fading_widget_animation的使用

一个为Flutter开发人员提供的插件,可以在屏幕加载时对任意组件添加平滑淡入动画!

特性

此插件包含易于使用的参数,使得实现起来非常简单,并且可以让您的应用程序看起来更加出色!

FadingWidgetAnimator 参数

参数名称 含义 默认值
child 您希望添加动画的组件 必填参数,无默认值
duration 组件从完全透明到完全不透明所需的时间(秒) 2 秒
startAfter 控制动画开始前等待的时间(秒) 0 秒
curve 动画相对于时间的曲线 线性曲线

开始使用

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

dependencies:
  fading_widget_animation: <VERSION>

或者在终端运行以下命令:

flutter pub add fading_widget_animation

使用方法

要让组件执行动画,可以按以下步骤操作:

  1. 在需要显示动画的屏幕文件中导入该包:
import 'package:fading_widget_animation/fading_widget_animation.dart';
  1. 调用FadingWidgetAnimator来显示淡入动画。duration参数是可选的,默认为2秒。child参数是必需的,如果不传递将导致构建失败。
FadingWidgetAnimator(
  // 可选参数,持续时间为4秒
  duration: const Duration(seconds: 4),
  // 子组件,必须传递
  child: const Text(
    'ta-daaaa!',
    style: TextStyle(
      fontSize: 32,
      fontWeight: FontWeight.bold,
    ),
  ),
  // 其他参数也是可选的
  // curve: Curves.linear,
  // startAfter: const Duration(seconds: 0),
)

示例代码

以下是完整的示例代码,展示了如何在Flutter应用中使用fading_widget_animation插件。

import 'package:flutter/material.dart';
// 导入需要使用的包
import 'package:fading_widget_animation/fading_widget_animation.dart';

void main() {
  runApp(const ExampleApp());
}

class ExampleApp extends StatelessWidget {
  const ExampleApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      debugShowCheckedModeBanner: false,
      home: PackageUse(),
    );
  }
}

class PackageUse extends StatelessWidget {
  const PackageUse({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 调用FadingWidgetAnimator来显示动画
            FadingWidgetAnimator(
              // 持续时间为4秒
              duration: const Duration(seconds: 4),
              // 子组件,必须传递
              child: const Text(
                'ta-daaaa!',
                style: TextStyle(
                  fontSize: 32,
                  fontWeight: FontWeight.bold,
                ),
              ),
            ),
            const SizedBox(height: 10),
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                // 构建多个带有不同延迟时间的圆点
                buildDots(
                  duration: const Duration(seconds: 3),
                  startAfter: const Duration(seconds: 1), // 延迟1秒
                  color: Colors.purple,
                ),
                const SizedBox(width: 5),
                buildDots(
                  duration: const Duration(seconds: 3),
                  startAfter: const Duration(seconds: 2), // 延迟2秒
                  color: Colors.indigo,
                ),
                const SizedBox(width: 5),
                buildDots(
                  duration: const Duration(seconds: 3),
                  startAfter: const Duration(seconds: 3), // 延迟3秒
                  color: Colors.green,
                ),
                const SizedBox(width: 5),
                buildDots(
                  duration: const Duration(seconds: 3),
                  startAfter: const Duration(seconds: 4), // 延迟4秒
                  color: Colors.yellow,
                ),
                const SizedBox(width: 5),
                buildDots(
                  duration: const Duration(seconds: 3),
                  startAfter: const Duration(seconds: 5), // 延迟5秒
                  color: Colors.orange,
                ),
                const SizedBox(width: 5),
                buildDots(
                  duration: const Duration(seconds: 3),
                  startAfter: const Duration(seconds: 6), // 延迟6秒
                  color: Colors.red,
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }

  // 构建具有动画的圆点
  FadingWidgetAnimator buildDots({
    required Duration duration,
    required Duration startAfter,
    required Color color,
  }) {
    return FadingWidgetAnimator(
      duration: duration,
      startAfter: startAfter,
      child: CircleAvatar(
        radius: 15,
        backgroundColor: color,
      ),
    );
  }
}

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

1 回复

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


fading_widget_animation 是一个 Flutter 插件,用于在 Flutter 应用中轻松实现淡入淡出动画效果。它可以帮助你在显示或隐藏小部件时添加平滑的过渡效果。

安装插件

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

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

然后运行 flutter pub get 来安装插件。

使用 FadingWidgetAnimation

FadingWidgetAnimation 是一个简单易用的组件,你可以将它包裹在任何小部件上,以实现淡入淡出效果。

基本用法

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool _visible = true;

  void _toggleVisibility() {
    setState(() {
      _visible = !_visible;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Fading Widget Animation Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            FadingWidgetAnimation(
              visible: _visible,
              duration: Duration(seconds: 1),
              child: Container(
                width: 200,
                height: 200,
                color: Colors.blue,
                child: Center(
                  child: Text(
                    'Hello, World!',
                    style: TextStyle(color: Colors.white, fontSize: 24),
                  ),
                ),
              ),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _toggleVisibility,
              child: Text(_visible ? 'Hide' : 'Show'),
            ),
          ],
        ),
      ),
    );
  }
}

参数说明

  • visible: 控制小部件是否可见。当 visibletrue 时,小部件会淡入;当 visiblefalse 时,小部件会淡出。
  • duration: 动画的持续时间。
  • child: 要应用淡入淡出动画的小部件。

其他参数

  • curve: 动画的曲线,默认为 Curves.easeInOut
  • fadeDirection: 淡入淡出的方向,可以是 FadeDirection.topToBottom, FadeDirection.bottomToTop, FadeDirection.leftToRight, FadeDirection.rightToLeft,默认为 FadeDirection.topToBottom

示例

FadingWidgetAnimation(
  visible: _visible,
  duration: Duration(seconds: 1),
  curve: Curves.easeIn,
  fadeDirection: FadeDirection.bottomToTop,
  child: Container(
    width: 200,
    height: 200,
    color: Colors.green,
    child: Center(
      child: Text(
        'Fade from Bottom',
        style: TextStyle(color: Colors.white, fontSize: 24),
      ),
    ),
  ),
);
回到顶部