Flutter动画效果插件new_im_animations的使用

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

Flutter动画效果插件new_im_animations的使用

im_animations

Pub Version (包括预发布) GitHub issues GitHub 关闭的问题 GitHub 最后一次提交 GitHub 代码大小

关于

im_animations 是一个不断增长的动画小部件集合,这些小部件既酷炫又优雅,并且性能优化。

反馈

如果您有任何反馈,请在这里提交问题:[反馈链接]。请支持并喜欢此项目。

可用的动画

动画名称 描述 示例 版本
ColorSonar 显示其子组件周围的颜色声波图案 0.1.1
Sonar 显示其子组件周围的声波图案 0.1.0
HeartBeat 对其子组件应用心跳效果 0.1.0
Fade 淡入淡出其子组件 0.1.0
Rotate 顺时针或逆时针旋转其子组件 0.1.0

使用说明

  1. 导入 package:im_animations/im_animations.dart 并使用任何动画。
  2. ColorSonar 在外层颜色比内层颜色更浅时看起来更好。

示例代码

import 'package:flutter/material.dart';
import 'package:new_im_animations/im_animations.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'im_animations',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: Homepage(),
    );
  }
}

class Homepage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Container(
                padding: EdgeInsets.symmetric(vertical: 5.0, horizontal: 30),
                decoration: BoxDecoration(
                  color: Colors.black,
                  borderRadius: BorderRadius.circular(5.0),
                ),
                child: Text(
                  "Rotate",
                  style: TextStyle(
                    color: Colors.white,
                  ),
                ),
              ),
              Container(
                margin: EdgeInsets.all(5.0),
                child: Sonar(
                  radius: 100,
                  child: CircleAvatar(
                    backgroundImage: AssetImage('assets/avatars/man.png'),
                    radius: 100,
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

// ---------------------COLOR SONAR------------------------------//
class ColorSonarDemo extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: ColorSonar(
          // wavesDisabled: true,
          // waveMotion: WaveMotion.synced,
          contentAreaRadius: 48.0,
          waveFall: 15.0,
          // waveMotionEffect: Curves.elasticIn,
          waveMotion: WaveMotion.synced,
          // duration: Duration(seconds: 5),
          child: CircleAvatar(
            radius: 48.0,
            backgroundImage: AssetImage('assets/avatars/man.png'),
          ),
        ),
      ),
    );
  }
}

完整示例

主页 (Homepage)

class Homepage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Container(
                padding: EdgeInsets.symmetric(vertical: 5.0, horizontal: 30),
                decoration: BoxDecoration(
                  color: Colors.black,
                  borderRadius: BorderRadius.circular(5.0),
                ),
                child: Text(
                  "Rotate",
                  style: TextStyle(
                    color: Colors.white,
                  ),
                ),
              ),
              Container(
                margin: EdgeInsets.all(5.0),
                child: Sonar(
                  radius: 100,
                  child: CircleAvatar(
                    backgroundImage: AssetImage('assets/avatars/man.png'),
                    radius: 100,
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

ColorSonar 动画示例 (ColorSonarDemo)

class ColorSonarDemo extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: ColorSonar(
          // wavesDisabled: true,
          // waveMotion: WaveMotion.synced,
          contentAreaRadius: 48.0,
          waveFall: 15.0,
          // waveMotionEffect: Curves.elasticIn,
          waveMotion: WaveMotion.synced,
          // duration: Duration(seconds: 5),
          child: CircleAvatar(
            radius: 48.0,
            backgroundImage: AssetImage('assets/avatars/man.png'),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何使用Flutter动画效果插件new_im_animations的示例代码。这个插件提供了一系列预定义的动画效果,可以帮助你快速实现丰富的用户界面动画。

首先,确保你的Flutter项目已经添加了new_im_animations依赖。你可以在pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  new_im_animations: ^0.x.x  # 请替换为最新版本号

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

接下来,你可以在你的Dart文件中使用这些动画效果。以下是一个简单的示例,展示了如何使用new_im_animations插件中的FadeIn动画效果:

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

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

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

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

class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('new_im_animations Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            // 使用FadeIn动画效果
            FadeIn(
              child: Container(
                width: 200,
                height: 200,
                color: Colors.amber,
                child: Center(
                  child: Text(
                    'Fade In Animation',
                    style: TextStyle(fontSize: 24, color: Colors.black),
                  ),
                ),
              ),
              // 动画开始延迟时间(可选)
              delay: Duration(seconds: 1),
              // 动画持续时间(可选)
              duration: Duration(seconds: 2),
            ),
            SizedBox(height: 20),
            // 你可以在这里添加更多的动画效果,比如 SlideIn, ScaleIn, RotateIn 等
            // SlideIn(
            //   child: ...,
            //   direction: SlideInDirection.LEFT,
            //   delay: Duration(seconds: 2),
            //   duration: Duration(seconds: 1),
            // ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个使用FadeIn动画效果的容器。FadeIn动画效果会使容器从完全透明逐渐变为完全不透明。你可以通过调整delayduration参数来控制动画的开始延迟时间和持续时间。

new_im_animations插件提供了多种动画效果,例如SlideInScaleInRotateIn等,你可以根据需求选择合适的动画效果,并参考官方文档获取更多详细信息和参数配置。

希望这个示例能帮助你快速上手new_im_animations插件的使用!

回到顶部