Flutter动画图标插件rive_animated_icon的使用

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

Flutter动画图标插件rive_animated_icon的使用

简介

rive_animated_icon 是一个Flutter插件,提供了50多个由Rive动画制作的图标。这些图标可以被定制以适应您的偏好。它包括了riveIcon类型、onTapcolor等参数,为用户提供了一定程度上的控制。

查看项目

Platform Support Platform Support Platform Support License

Icons Sample

示例代码

以下是一个完整的示例demo,展示了如何在Flutter应用中使用rive_animated_icon插件:

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Rive Animated Icons',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({
    super.key,
  });

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.black,
      body: SafeArea(
          child: SingleChildScrollView(
        child: Center(
          child: Wrap(
              alignment: WrapAlignment.start,
              children: RiveIcon.values
                  .map((RiveIcon e) => Padding(
                        padding: const EdgeInsets.all(5.0),
                        child: Column(
                          children: [
                            const SizedBox(
                              height: 10,
                            ),
                            RiveAnimatedIcon(
                              riveIcon: e,
                              width: 40,
                              height: 40,
                              strokeWidth: 3,
                              loopAnimation: true,
                              onTap: () {
                                debugPrint('tapped');
                              },
                              onHover: (value) {
                                debugPrint('value is $value');
                              },
                              color: Colors.green,
                            ),
                          ],
                        ),
                      ))
                  .toList()),
        ),
      )),
    );
  }
}

必要参数

riveIcon

此参数用于定义来自RiveIcon枚举的图标类型。

可选参数

width

设置图标的宽度。

height

设置图标的高度。

color

设置图标的颜色。

loopAnimation

当此参数设置为true时,图标的动画将循环播放。

onTap

用户点击图标时触发的回调函数。

onHover

鼠标悬停在图标上时触发的回调函数。

splashColor

设置图标点击时的水波纹颜色。

strokeWidth

设置图标的描边宽度。

splashFactory

设置图标的水波纹效果工厂。

mouseCursor

设置鼠标悬停在图标上时的鼠标样式。

enableAbsorbPointer

当此参数设置为true时,禁用图标的所有交互功能。

动画图标描边宽度示例

最佳实践

  • 如果Rive动画设置为循环,并且滚动到屏幕外,您可以禁用循环以停止动画并节省资源。同样,当动画回到视图内时,可以重新启用循环。

许可证

Rive Animated Icons遵循MIT许可证,详情请参阅 LICENSE.

动画致谢

所有可用的图标都是在Rive中动画化的,并来源于Rive社区文件。特别感谢所有的动画师!

维护者

以上是关于rive_animated_icon插件的详细介绍和使用方法,希望对您有所帮助!


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

1 回复

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


当然,rive_animated_icon 是一个强大的 Flutter 插件,它允许你使用 Rive 动画图标来增强你的应用界面。Rive 动画图标具有高保真度和流畅性,非常适合用于加载指示器、按钮动画等场景。

以下是一个简单的代码示例,展示如何在 Flutter 应用中使用 rive_animated_icon 插件。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  rive: ^0.8.0  # 请检查最新版本号
  rive_animated_icon: ^0.3.0  # 请检查最新版本号

然后运行 flutter pub get 来获取这些依赖。

2. 导入包

在你的 Dart 文件中导入必要的包:

import 'package:flutter/material.dart';
import 'package:rive/rive.dart';
import 'package:rive_animated_icon/rive_animated_icon.dart';

3. 使用 RiveAnimatedIcon

下面是一个完整的 Flutter 应用示例,展示如何使用 RiveAnimatedIcon

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

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

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

class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
  late AnimationController _controller;

  @override
  void initState() {
    super.initState();
    _controller = AnimationController(
      duration: const Duration(seconds: 1),
      vsync: this,
    )..repeat(reverse: true);
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Rive Animated Icon Demo'),
      ),
      body: Center(
        child: RiveAnimatedIcon.asset(
          'assets/rive/your_animation.riv', // 替换为你的 Rive 文件路径
          animations: ['idle', 'tap'], // 替换为你的动画名称列表
          activeAnimation: 'tap', // 默认激活的动画
          inactiveAnimation: 'idle', // 默认非激活的动画
          controller: _controller,
          size: 50.0, // 图标大小
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          setState(() {
            // 切换动画状态
            _controller.isAnimating
                ? _controller.stop()
                : _controller.reset();
          });
        },
        tooltip: 'Toggle Animation',
        child: Icon(Icons.play_arrow),
      ),
    );
  }
}

4. 添加 Rive 文件

确保你将 Rive 动画文件(例如 your_animation.riv)放在项目的 assets 文件夹中,并在 pubspec.yaml 中添加相应的资源路径:

flutter:
  assets:
    - assets/rive/your_animation.riv

5. 运行应用

现在你可以运行你的 Flutter 应用,应该能够看到一个带有 Rive 动画图标的界面。点击浮动操作按钮(FAB)可以切换动画状态。

这个例子展示了如何使用 rive_animated_icon 插件在 Flutter 应用中集成和控制 Rive 动画图标。你可以根据需要调整动画、大小和其他属性。

回到顶部