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

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

dart_animated_emoji 是一个纯 Dart 实现的 Noto 动态表情字体,用于渲染动画。它不依赖于 Flutter。

An animated unicorn with a rainbow

特性

  • 渲染为 Lottie、webp 或 gif 格式
  • 使用预生成的表情或在应用中生成自定义集合

使用方法

使用预生成的实现
// 检查特定的表情符号是否受支持
final isThumbsUpSupported = AnimatedEmoji.isEmojiSupported('👍🏽');

// 搜索带有标签的表情符号
final unicorn = AnimatedEmoji.all.firstWhere(
    (element) => element.tags.contains('unicorn'),
);

// 使用 lottie 包将其渲染为 Flutter 小部件
LottieBuilder.memory(
    Uint8List.fromList(
        unicorn.lottieAnimation.codeUnits,
    ),
);

有关 Flutter 渲染的更多文档,请查看示例或 lottie 包

为应用生成自定义输出
# 添加开发依赖
dart pub add --dev dart_animated_emoji

# 直接将表情符号生成到项目中
dart run dart_animated_emoji:generator lib/generated/my_emojis/my_emojis.g.dart

# 可选地指定格式
dart run dart_animated_emoji:generator lib/generated/my_emojis/my_emojis.g.dart webp # 支持的格式:lottie(默认)、avif、webp、gif

# 获取更多信息
dart run dart_animated_emoji:generator --help

额外信息

本项目与 Noto 作者没有任何隶属关系。Noto Emoji Animated 字体按 CC BY-4.0 许可。


示例代码

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

import 'dart:typed_data';

import 'package:dart_animated_emoji/dart_animated_emoji.dart';
import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';

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

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

  // 这个小部件是你的应用的根
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.pink),
        useMaterial3: true,
      ),
      home: const AnimationHomePage(),
    );
  }
}

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

  [@override](/user/override)
  State<AnimationHomePage> createState() => _AnimationHomePageState();
}

class _AnimationHomePageState extends State<AnimationHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text('动画'),
      ),
      body: GridView.builder(
        gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 4),
        itemCount: AnimatedEmoji.all.length,
        itemBuilder: (context, index) {
          return Center(
            child: SizedBox.square(
              dimension: 128,
              child: LottieBuilder.memory(
                Uint8List.fromList(
                  AnimatedEmoji.all[index].lottieAnimation.codeUnits,
                ),
              ),
            ),
          );
        },
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用dart_animated_emoji插件来实现动态表情动画的示例代码。

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

dependencies:
  flutter:
    sdk: flutter
  dart_animated_emoji: ^最新版本号  # 替换为实际可用的最新版本号

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

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

import 'package:flutter/material.dart';
import 'package:dart_animated_emoji/dart_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,  // 表情符号的大小
          duration: 500,  // 动画的持续时间(毫秒)
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个带有动态表情动画的屏幕。AnimatedEmoji组件用于显示动画表情符号。你可以通过更改emoji属性来使用不同的表情符号,并通过sizeduration属性来调整表情符号的大小和动画的持续时间。

请注意,dart_animated_emoji插件可能支持有限数量的动态表情符号。如果你尝试使用一个不支持的表情符号,它可能会以静态形式显示,而不是动画形式。

此外,确保你使用的dart_animated_emoji版本是最新的,因为插件的功能和API可能会随着版本的更新而发生变化。如果你遇到任何问题,请查阅插件的官方文档或在其GitHub存储库中查找相关信息。

回到顶部