Flutter表情符号转换插件twemoji的使用
Flutter表情符号转换插件twemoji的使用
Twitter Emojis for Flutter,这个插件支持SVG和PNG 72x72的表情符号。
使用方法
单个表情符号的显示
使用Twemoji
widget来显示单个表情符号:
Twemoji(
emoji: '🍕',
height: 50,
width: 50,
)
文本中包含表情符号
使用TwemojiText
widget可以将文本中的表情符号渲染为Twitter风格的表情:
TwemojiText(
text: 'wow 💻👩💻👨💻 ',
),
使用RichText与TwemojiTextSpan
结合RichText
和TwemojiTextSpan
可以在富文本中渲染表情符号:
RichText(
text: TwemojiTextSpan(
text: 'Text 🍕🍔🌭🍿🧂🥓🥨🥐🍞 pancakes 🥞🥞',
style: Theme.of(context).textTheme.headline6,
),
)
包含特定表情符号
默认情况下,该库支持所有表情符号。为了减少包体积,只构建应用程序需要的表情符号,可以在pubspec.yaml
文件中指定所需的表情符号列表:
twemoji:
includes: '👩👩👧👧👏👍'
然后运行以下命令以过滤生成资产的表情符号列表:
flutter pub run twemoji:include_emojis
示例代码
下面是一个完整的示例demo,展示了如何在Flutter应用中使用twemoji
插件:
import 'dart:math' as math;
import 'package:flutter/material.dart';
import 'package:twemoji/twemoji.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) => MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage>
with SingleTickerProviderStateMixin {
late AnimationController _controller;
final _emojis = '☺️ 🍕 🍔 🌭 👩🍳 ✈️ 0️⃣ 1️⃣ 2️⃣ 3️⃣';
[@override](/user/override)
void initState() {
super.initState();
_controller =
AnimationController(vsync: this, duration: const Duration(seconds: 5))
..repeat();
}
[@override](/user/override)
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
title: const Text('Twemoji'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RichText(
text: TextSpan(
children: [
TextSpan(
text: '$_emojis :Device\n',
style: const TextStyle(
color: Colors.black,
fontSize: 20,
),
),
TwemojiTextSpan(
text:
'$_emojis :Twemoji.png\n',
twemojiFormat: TwemojiFormat.png,
style: const TextStyle(
color: Colors.black,
fontSize: 20,
),
),
TwemojiTextSpan(
text: '$_emojis :Twemoji.svg x 1.3\n',
twemojiFormat: TwemojiFormat.svg,
emojiFontMultiplier: 1.3,
style: const TextStyle(
color: Colors.black,
fontSize: 20,
),
),
TwemojiTextSpan(
text: '$_emojis :Twemoji.networkSvg x 1.5\n',
twemojiFormat: TwemojiFormat.networkSvg,
emojiFontMultiplier: 1.5,
style: const TextStyle(
color: Colors.black,
fontSize: 20,
),
),
],
),
),
const TwemojiText(
text: '💻👩💻👨💻 :auto format',
emojiFontMultiplier: 2,
),
const SizedBox(height: 20),
AnimatedBuilder(
animation: _controller,
builder: (context, child) => Transform.rotate(
angle: _controller.value * 2 * math.pi,
child: SizedBox(
height: 105,
width: 105,
child: Stack(
children: List.generate(
4,
(index) => Align(
alignment: _getAlign(index),
child: RotationTransition(
turns: AlwaysStoppedAnimation(index * 90 / 360),
child: const Twemoji(
emoji: '🍕',
height: 50,
width: 50,
),
),
),
),
),
),
),
),
],
),
),
);
AlignmentGeometry _getAlign(int index) {
switch (index) {
case 0:
return Alignment.topCenter;
case 1:
return Alignment.centerRight;
case 2:
return Alignment.bottomCenter;
case 3:
return Alignment.centerLeft;
default:
return Alignment.topCenter;
}
}
}
更多关于Flutter表情符号转换插件twemoji的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter表情符号转换插件twemoji的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter中使用twemoji
插件来进行表情符号转换的示例代码。我们将使用flutter_twemoji
这个包来实现这个功能。
首先,你需要在你的pubspec.yaml
文件中添加依赖:
dependencies:
flutter:
sdk: flutter
flutter_twemoji: ^x.y.z # 请将x.y.z替换为最新的版本号
然后,运行flutter pub get
来安装依赖。
接下来,我们编写一个简单的Flutter应用来演示如何使用flutter_twemoji
将文本中的表情符号转换为Twemoji图标。
import 'package:flutter/material.dart';
import 'package:flutter_twemoji/flutter_twemoji.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Twemoji Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final String inputText = "Hello 😃! This is a test with 🚀 and 💻.";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Twemoji Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Original Text:',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
Text(inputText, style: TextStyle(fontSize: 16)),
SizedBox(height: 16),
Text(
'Twemoji Converted Text:',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
Twemoji(
text: inputText,
fontSize: 16, // 可选,设置字体大小
style: TextStyle(), // 可选,设置文本样式
),
],
),
),
);
}
}
在这个示例中,我们做了以下事情:
- 在
pubspec.yaml
文件中添加了flutter_twemoji
依赖。 - 创建了一个简单的Flutter应用,其中包含一个显示原始文本和一个使用
Twemoji
组件将表情符号转换为Twemoji图标的部分。
Twemoji
组件接收一个文本字符串作为输入,并自动将其中的表情符号转换为Twemoji图标。你可以通过fontSize
和style
参数来自定义Twemoji图标的显示样式。
确保你已经正确安装了flutter_twemoji
包并运行了这个示例代码,你应该能看到原始文本和转换后的Twemoji图标文本的对比。