Flutter表情符号管理插件flutter_emoji的使用
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';
主要有两个类用于处理表情符号文本:Emoji
和 EmojiParser
。基本上,你需要初始化一个 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
更多关于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),
),
],
),
),
);
}
}
解释
- 依赖添加:在
pubspec.yaml
文件中添加flutter_emoji
依赖。 - 主应用:
MyApp
是一个无状态小部件,它设置了应用的主题和主页。 - 主页:
EmojiDemoPage
是一个有状态小部件,它包含了一个文本显示选中的表情符号和一个EmojiPicker
小部件用于选择表情符号。 - 选择回调:
_onEmojiSelected
方法是一个回调函数,当用户选择一个表情符号时,它会被调用并更新selectedEmoji
状态。 - EmojiPicker:
EmojiPicker
小部件用于显示表情符号选择器,用户可以通过它选择表情符号。你可以根据需要自定义它的属性,比如表情符号的大小、推荐的行数、是否只显示推荐的表情符号等。
这个示例展示了如何使用flutter_emoji
插件来集成表情符号选择器到你的Flutter应用中,并显示选中的表情符号。你可以根据需要进行进一步的自定义和扩展。