Flutter动态表情动画插件animated_emoji的使用

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

Flutter动态表情动画插件animated_emoji的使用

🚀

Animated Emoji

style: very good analysis

animated_emoji插件为您的应用提供了超过400个动态表情。您可以在应用程序中的任何地方使用AnimatedEmoji小部件并选择一个表情。

使用方法

基本用法

只需在代码中使用AnimatedEmoji组件,并指定一个表情即可:

const AnimatedEmoji(
  AnimatedEmojis.rocket,
),

自定义配置

您可以根据需要配置这个小部件,例如设置大小、是否重复播放等:

AnimatedEmoji(
  AnimatedEmojis.clap.dark,
  size: 128,
  repeat: false,
),

离线支持

为了实现离线支持,您还可以将表情添加到您的assets中。首先,在pubspec.yaml文件中导入表情。表情的名字可以在Noto Animated Emoji找到。

需要注意的是,如果您想使用特定肤色的表情变化,需要单独导入这些变体(在导入时添加前缀,如Dark, Light等):

flutter:
  assets:
    - packages/animated_emoji/lottie/rocket.json
    - packages/animated_emoji/lottie/clap.json 
    # 导入一个肤色变化的表情。
    - packages/animated_emoji/lottie/clapDark.json

额外信息

该包使用了Noto Animated Emoji,其授权协议为CC BY 4.0

示例Demo

下面是一个完整的示例demo,展示了如何使用animated_emoji插件来创建带有动态表情的应用程序界面:

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

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Animated Emoji',
      theme: ThemeData(primarySwatch: Colors.blue, useMaterial3: true),
      home: const HomePage(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Animated Emoji')),
      body: Center(
        child: Column(
          children: [
            const AnimatedEmoji(
              AnimatedEmojis.rocket,
              size: 128,
            ),
            const AnimatedEmoji(
              AnimatedEmojis.victory,
              size: 128,
              repeat: false,
              // 强制从assets加载表情。
              source: AnimatedEmojiSource.asset,
            ),
            AnimatedEmoji(
              // 更改肤色
              AnimatedEmojis.wave.dark,
            ),
            const DemoHoverEmoji(),
          ],
        ),
      ),
    );
  }
}

/// 演示如何使用 [AnimationController] 与 [AnimatedEmoji].
class DemoHoverEmoji extends StatefulWidget {
  const DemoHoverEmoji({super.key});

  @override
  State<DemoHoverEmoji> createState() => _DemoHoverEmojiState();
}

class _DemoHoverEmojiState extends State<DemoHoverEmoji>
    with SingleTickerProviderStateMixin {
  late final AnimationController controller;

  @override
  void initState() {
    super.initState();
    controller = AnimationController(
      vsync: this,
    );
  }

  @override
  Widget build(BuildContext context) {
    return MouseRegion(
      onEnter: (event) {
        controller.forward(from: 0);
      },
      child: AnimatedEmoji(
        AnimatedEmojis.brokenHeart,
        controller: controller,
        size: 128,
        onLoaded: (duration) {
          // 获取动画的持续时间。
          controller.duration = duration;
        },
      ),
    );
  }
}

/// 展示高级用法。
class AdvancedUsageEmojis extends StatelessWidget {
  const AdvancedUsageEmojis({super.key});

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        AnimatedEmoji(
          AnimatedEmojis.fromId('1f386'),
        ),
        AnimatedEmoji(
          AnimatedEmojis.fromEmojiString('❤️')!,
        ),
        Builder(
          builder: (context) {
            // 根据名字获取表情。
            final emoji = AnimatedEmojis.fromName('victory');

            // 检查表情是否支持肤色。
            return AnimatedEmoji(
              emoji.hasSkinTones
                  ? (emoji as AnimatedTonedEmojiData).mediumLight
                  : emoji,
            );
          },
        ),
      ],
    );
  }
}

此示例包括了基本的动态表情展示、通过鼠标悬停触发动画、以及更复杂的表情查找和显示逻辑。希望这可以帮助您更好地理解和使用animated_emoji插件!


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

1 回复

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


当然,以下是如何在Flutter项目中使用animated_emoji插件来实现动态表情动画的一个示例代码案例。这个插件允许你在Flutter应用中添加动画表情。

首先,确保你已经在pubspec.yaml文件中添加了animated_emoji依赖:

dependencies:
  flutter:
    sdk: flutter
  animated_emoji: ^最新版本号  # 请替换为当前可用的最新版本号

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

接下来,你可以在你的Flutter应用中使用这个插件。以下是一个简单的示例代码,展示如何在你的Flutter应用中展示一个动态表情动画。

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

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

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

class AnimatedEmojiScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Animated Emoji Demo'),
      ),
      body: Center(
        child: AnimatedEmoji(
          emoji: '😄',  // 你可以替换为任何支持的表情符号
          size: 100.0,  // 表情的大小
          animationDuration: Duration(seconds: 1),  // 动画持续时间
          repeat: true,  // 是否重复动画
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个带有动画表情的页面。AnimatedEmoji小部件接受以下参数:

  • emoji: 一个字符串,表示你想要显示的动画表情符号。
  • size: 表情符号的大小。
  • animationDuration: 动画的持续时间。
  • repeat: 一个布尔值,指示动画是否应该重复。

你可以根据需要调整这些参数。

请注意,animated_emoji插件的具体实现和API可能会有所不同,因此请查阅最新的插件文档以确保正确使用。如果插件的API有所变化,上述代码可能需要做相应的调整。

回到顶部