Flutter表情符号管理插件flutter_emoji的使用

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

Flutter表情符号管理插件flutter_emoji的使用

简介

flutter_emoji 是一个轻量级的表情符号包,适用于Flutter和基于Dart的应用程序。它包含了所有最新的表情符号,并且是用100%的咖啡因(代码)和爱心制作的!该包受到了 node-emoji 包的启发。

更新:从v2.3.4版本开始,支持Unicode 13.0中的所有表情符号。

请注意,我最初创建这个包是为了支持我的Flutter应用程序。然而,随着Dart在更多平台上得到支持,从v2.4.0版本开始,这个包将适用于所有类型的基于Dart的应用程序。

工作进展

我正在开发包的新版本,可能会引入破坏性更改,但我将尽量保持API的兼容性。以下是v3版本的一些更新:

  • 支持Unicode 15.1+表情符号。
  • 表情符号肤色选项。
  • 表情符号分类(类别)。
  • 表情符号版本。
  • 处理/操作表情符号的一些新方法。

安装

pubspec.yaml 文件中添加以下内容:

dependencies:
  flutter_emoji: ">= 2.0.0"

API 使用

首先,导入包:

import 'package:flutter_emoji/flutter_emoji.dart';

主要有两个类用于处理表情符号文本:EmojiEmojiParser。基本上,你需要初始化一个 EmojiParser 的实例并调用其方法。

示例代码

下面是一个完整的示例demo,展示了如何使用 flutter_emoji 插件来处理表情符号。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Flutter Emoji Example')),
        body: Center(
          child: EmojiExample(),
        ),
      ),
    );
  }
}

class EmojiExample extends StatefulWidget {
  @override
  _EmojiExampleState createState() => _EmojiExampleState();
}

class _EmojiExampleState extends State<EmojiExample> {
  final parser = EmojiParser();
  String inputText = 'I :heart: :coffee:';
  String outputText = '';

  void _convertText() {
    setState(() {
      outputText = parser.emojify(inputText);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Padding(
          padding: const EdgeInsets.all(8.0),
          child: TextField(
            controller: TextEditingController(text: inputText),
            onChanged: (value) => inputText = value,
            decoration: InputDecoration(hintText: 'Enter text with emoji codes'),
          ),
        ),
        ElevatedButton(
          onPressed: _convertText,
          child: Text('Convert to Emojis'),
        ),
        Padding(
          padding: const EdgeInsets.all(8.0),
          child: Text(
            outputText.isEmpty ? 'Output will appear here' : outputText,
            style: TextStyle(fontSize: 24),
          ),
        ),
      ],
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用程序,用户可以在文本框中输入包含表情符号代码的文本,然后点击按钮将其转换为实际的表情符号。EmojiParser 类的 emojify 方法用于执行此转换。

初始化 EmojiParser 数据

有两种可用的数据集可以用于初始化 EmojiParser:本地数据集和服务器数据集。

  • 加载本地数据集:

    var localParser1 = EmojiParser();
    var localParser2 = EmojiParser(init: false);
    localParser2.initLocalData();
    
  • 加载服务器数据集(需要网络权限):

    var serverParser = EmojiParser(init: false);
    await serverParser.initServerData(); // 确保在异步函数/方法中调用
    

    注意:确保在Android上添加互联网权限。

    <!-- Required to fetch data from the internet. -->
    <uses-permission android:name="android.permission.INTERNET" />
    

如果本地数据集中没有最新表情符号,请加载服务器数据集。如果仍然无法工作,请在仓库中创建问题或拉取请求。

待办事项

以下功能即将添加到此包中:

  • ✅ 获取表情符号详细信息。
  • ✅ 重构以简化使用。
  • ✅ 验证无效输入。
  • ✅ 从给定文本中查找可用表情符号列表。
  • ✅ 用另一个表情符号替换特定表情符号。
  • ✅ 回调以对找到的表情符号进行额外格式化。
  • ✅ 获取最新表情符号列表的能力。
  • ❌ 创建可扩展的表情符号匹配器。

许可证

MIT许可证,详情请参阅 LICENSE.md


更多关于Flutter表情符号管理插件flutter_emoji的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter表情符号管理插件flutter_emoji的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用flutter_emoji插件来管理表情符号的示例代码。这个插件允许你轻松地集成和管理表情符号到你的应用中。

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

dependencies:
  flutter:
    sdk: flutter
  flutter_emoji: ^1.0.0  # 请检查最新版本号

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

接下来,你可以在你的Flutter应用中使用这个插件。以下是一个简单的示例,展示如何在一个页面上显示表情符号选择器,并将选中的表情符号显示在页面上。

主页面代码 (main.dart)

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

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

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

class EmojiDemoPage extends StatefulWidget {
  @override
  _EmojiDemoPageState createState() => _EmojiDemoPageState();
}

class _EmojiDemoPageState extends State<EmojiDemoPage> {
  String selectedEmoji = "";

  void _onEmojiSelected(String emoji) {
    setState(() {
      selectedEmoji = emoji;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Emoji Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            Text(
              'Selected Emoji:',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 8),
            Text(
              selectedEmoji,
              style: TextStyle(fontSize: 24, color: Colors.blue),
            ),
            SizedBox(height: 24),
            EmojiPicker(
              onEmojiSelected: _onEmojiSelected,
              initialCategory: Category.recent,
              emojiSize: 32,
              numRecommendedRows: 2,
              recommendOnly: false,
              showCategoryIcons: true,
              columns: 7,
              backgroundColor: Colors.white,
              indicatorColor: Colors.blue,
              emojiPadding: 4.0,
              gridPadding: EdgeInsets.only(left: 8, right: 8, top: 16, bottom: 16),
            ),
          ],
        ),
      ),
    );
  }
}

解释

  1. 依赖添加:在pubspec.yaml文件中添加flutter_emoji依赖。
  2. 主应用MyApp是一个无状态小部件,它设置了应用的主题和主页。
  3. 主页EmojiDemoPage是一个有状态小部件,它包含了一个文本显示选中的表情符号和一个EmojiPicker小部件用于选择表情符号。
  4. 选择回调_onEmojiSelected方法是一个回调函数,当用户选择一个表情符号时,它会被调用并更新selectedEmoji状态。
  5. EmojiPickerEmojiPicker小部件用于显示表情符号选择器,用户可以通过它选择表情符号。你可以根据需要自定义它的属性,比如表情符号的大小、推荐的行数、是否只显示推荐的表情符号等。

这个示例展示了如何使用flutter_emoji插件来集成表情符号选择器到你的Flutter应用中,并显示选中的表情符号。你可以根据需要进行进一步的自定义和扩展。

回到顶部