Package selection guidance compiled from public package information, community data, and project usage.
A lightweight Flutter package that provides access to the latest emojis, designed for easy integration into apps. It supports all major platforms including Android, iOS, Web, macOS, Windows, and Linux. The package is regularly updated to include new emojis and is built with simplicity and performance in mind. Ideal for enhancing user interfaces with expressive, up-to-date emoji content without adding bloat.
Use cases
Adding emojis to text widgets
Creating chat or messaging interfaces
Enhancing UI with expressive icons
Supporting social media-style content
Displaying emoji reactions
Key features
Up-to-date emoji set
Cross-platform support
Lightweight size
Easy-to-use API
Regular updates
Suitable for
Simple emoji display
Chat applications
User-generated content
Social features
Apps targeting global audiences
Considerations
May require manual update for rare or newly released emojis
Limited customization beyond basic rendering
No built-in emoji picker
Depends on external source for emoji data
Not optimized for large emoji-heavy layouts
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
flutter_emoji
👉 A light-weight Emoji 📦 for Flutter and Dart-based applications with all up-to-date emojis 😄. Made from 💯% ☕ with ❤️!
Update: since v2.3.4+, support all emojis listed in Unicode 13.0.
NOTE: I initially created this package to support my Flutter apps. However, Dart is growing to support on more platforms, so starting from v2.4.0+, this package will be available to all types of Dart-based applications.
Work in progress
I'm working on the new version of the package, it might or might not introduce breaking changes but I will try to maintain the compatibility in the API.
Here are few upcoming update to the v3:
Support Unicode 15.1+ emojis.
Skin tone
Group (category) of the emojis
Emoji version
Few new methods for handling/manipulating emojis.
Installation
Add this into pubspec.yaml
dependencies:flutter_emoji:">= 2.0.0"
API Usage
First, import the package:
import'package:flutter_emoji/flutter_emoji.dart';
There are two main classes you need to know to handle Emoji text: Emoji and EmojiParser.
Basically, you need to initialize an instance of EmojiParser and call its methods.
var parser = EmojiParser();
var coffee = Emoji('coffee', '☕');
var heart = Emoji('heart', '❤️');
// Get emoji infovar emojiHeart = parser.info('heart');
print(emojiHeart); '{name: heart, full: :heart:, code: ❤️}'// Check emoji equality
heart == emojiHeart; // returns: true
heart == emojiCoffee; // returns: false// Get emoji by name or code
parser.get('coffee'); // returns: Emoji{name="coffee", full=":coffee:", code="☕"}
parser.get(':coffee:'); // returns: Emoji{name="coffee", full=":coffee:", code="☕"}
parser.hasName('coffee'); // returns: true
parser.getName('coffee'); // returns: Emoji{name="coffee", full=":coffee:", code="☕"}
parser.hasEmoji('❤️'); // returns: true
parser.getEmoji('❤️'); // returns: Emoji{name="heart", full=":heart:", code="❤️"}
parser.emojify('I :heart: :coffee:'); // returns: 'I ❤️ ☕'
parser.unemojify('I ❤️ ☕'); // returns: 'I :heart: :coffee:'// Count number of present emojis
parser.count('I ❤️ Flutter just like ☕'); // returns: 2// Count frequency of a specific emoji
parser.frequency('I ❤️ Flutter just like ☕', '❤️'); // returns: 1// Replace a specific emoji by another emoji
parser.replace('I ❤️ coffee', '❤️', '❤️🔥'); // returns: 'I ❤️🔥 coffee'// Get a list of all emojis from the input
parser.parseEmojis('I ❤️ Flutter just like ☕'); // returns: ['❤️', '☕']
All methods will return Emoji.None if emoji is not found, except these two emojify() and unemojify() that will return original input.
There are two available datasets available you can choose to initialize for EmojiParser: local and server.
// to load local datasetvar localParser1 = EmojiParser();
var localParser2 = EmojiParser(init: false);
localParser2.initLocalData();
// to load server dataset// this will trigger an URL request to download latest emoji datavar serverParser = EmojiParser(init: false);
await serverParser.initServerData(); // make sure to wrap in an `async` function/method.
NOTE: make sure to add Internet permission on Android.
<!-- Required to fetch data from the internet. --><uses-permissionandroid:name="android.permission.INTERNET" />
In any occasion that local dataset doesn't have the latest emojis, load server dataset instead. If it is still not working, please create an issue or pull request to the repo.
TODO
Features coming to this package:
[x] Get detail of an emoji.
[x] Refactor for easier usage.
[x] Validate bad input.
[x] Find list of available emojis from a given text.
[x] Replace emoji by another one.
[x] Callback for additional formatting found emojis.