emoji_extension 0.3.0
emoji_extension: ^0.3.0 copied to clipboard
Emojis for Flutter & Dart (Unicode 15.1) + one, yet powerful emojis String extension
Emojis for Dart Unicode 15.1
+
One, yet powerful emojis String extension
Features #
- Contains over 5,000 emojis from Unicode 15.1 πͺ
- Supports:
shorcodes
: Discord, Github, Slack π«‘- skin tone variations: π ππ» ππΌ ππ½ ππΎ ππΏ
- hair style variations: 𦰠𦱠𦳠π¦²
- multi-person: π¨βπ©βπ§βπ¦
- Provides
Emojis()
class that has all the info about each emoji:- value: π
- unicode: 1F600
- name: Grinning Face
- apple name: Grinning Face
- also known as: Happy Face, Smiley Face
- group: Smileys & Emotion
- subgroup: face-smiling
- version: 8.0
- status: fully-qualified
- shortcodes:
- Discord: grinning
- Github: grinning
- Slack: grinning
- Provides
emojis
extension to manipulate emojis on any text. Quick overview of just a few possibilities:
'textπtextπ€¦πΎββοΈtext'.emojis
.contains // true
.only // false
.onlyOne // false
.count // 2
.split // [text, text, text]
.remove // texttexttext
.replace('-') // text-text-text
.extract // [π, π€¦πΎββοΈ]
.get
.unicodes // [1F600, 1F926 1F3FE 200D 2640 FE0F]
.names // [Grinning Face, Woman Facepalming: Medium-Dark Skin Tone]
.slackShortcodes // [:grinning:, :woman-facepalming::skin-tone-5:]
... // and many more
// from Discord shortcodes:
':grinning: text :woman-facepalming::skin-tone-5:'.emojis.fromShortcodes(); // π text π€¦πΎββοΈ
Usage #
Import import 'package:emoji_extension/emoji_extension.dart';
and you've got 2 benefits:
1οΈβ£ Emojis repository______________________________________________ |
2οΈβ£ Emojis extension______________________________________________ |
Emojis()
repository #
Full Emojis()
repository with unicodes, names, apple names, "also known as", groups, subgroups, shortcodes:
Emojis() // .get .groups .subgroups .groupsWithSubgroups .shortcodePlatforms and many more...
Emojis().get #
Emojis().get; /* [
Emoji(
value: π,
unicode: 1F600,
name: Grinning Face,
appleName: Grinning Face,
alsoKnownAs: [Happy Face, Smiley Face],
group: Smileys & Emotion,
subgroup: face-smiling,
version: 8.0,
status: fully-qualified,
shortcodes: [
Shortcode(
platform: Default,
values: [grinning_face]
),
Shortcode(
platform: CLDR,
values: [grinning_face]
),
Shortcode(
platform: Discord,
values: [grinning]
),
Shortcode(
platform: Github,
values: [grinning]
),
Shortcode(
platform: Slack,
values: [grinning]
)]
),
Emoji(
value: π,
unicode: 1F603,
name: Grinning Face with Big Eyes,
appleName: Grinning Face with Big Eyes,
alsoKnownAs: [Grinning Face, Happy Face, Happy, Smiley Face]
group: Smileys & Emotion,
subgroup: face-smiling,
version: 6.0,
status: fully-qualified
shortcodes: [...]
)
...
] */
Emojis().get.values
Emojis().get.values; // [π, π, π, π, π, π
, π€£, π, π, π, π« , π, π, π, π₯°, π, ...]
Emojis().get.unicodes
Emojis().get.unicodes; // [1F600, 1F603, 1F604, 1F601, 1F606, 1F605, 1F923, 1F602, 1F642, ...]
Emojis().get.names
Emojis().get.names; // [Grinning Face, Grinning Face with Big Eyes, ...]
Emojis().get.appleNames
Emojis().get.appleNames; // [Grinning Face, Grinning Face with Big Eyes, ...]
Emojis().get.alsoKnownAs
Emojis().get.alsoKnownAs; // [Happy Face, Smiley Face, Grinning Face, ...]
Emojis().get.shortcodes
// Default (emoji name in snake_case)
Emojis().get.shortcodes; // [:grinning_face:, :grinning_face_with_big_eyes:, ...]
// CLDR
Emojis().get.cldrShortcodes; // [:grinning_face:, :grinning_face_with_big_eyes:, ...]
// Discord
Emojis().get.discordShortcodes; // [:grinning:, :smiley:, :smile:, :grin:, :laughing:, ...]
// Github (no skin-tone shortcodes)
Emojis().get.githubShortcodes; // [:grinning:, :smiley:, :smile:, :grin:, :laughing:, ...]
// Slack
Emojis().get.slackShortcodes; // [:grinning:, :smiley:, :smile:, :grin:, :laughing:, ...]
Emojis().groups #
Emojis().groups; // [Group.smileysAndEmotion, Group.peopleAndBody, Group.component, ...]
Emojis().groups.values; // [Smileys & Emotion, People & Body, Component, Animals & Nature, ...]
Emojis().subgroups #
Emojis().subgroups; // [Subgroup.faceSmiling, Subgroup.faceAffection, Subgroup.faceTongue, ...]
Emojis().subgroups.values; // [face-smiling, face-affection, face-tongue, face-hand, ...]
Emojis().groupsWithSubgroups #
Emojis().groupsWithSubgroups; // {Group.smileysAndEmotion: [Subgroup.faceSmiling, ...], ...}
Emojis().groupsWithSubgroupsValues; // {Smileys & Emotion: [face-smiling, ...], ...}
Emojis().shortcodePlatforms #
Emojis().shortcodePlatforms; // [Default, CLDR, Discord, Github, Slack]
Emojis().versions #
Emojis().versions; // [Version.v6_0, Version.v7_0, Version.v8_0, Version.v9_0, ...]
Emojis().versions.values; // [6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 12.1, 13.0, ...]
Emojis().statuses #
Emojis().statuses; // [Version.v6_0, Version.v7_0, Version.v8_0, Version.v9_0, ...]
Emojis().statuses.values; // [6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 12.1, 13.0, ...]
Emojis().getOne() #
// By value
Emojis().getOne('π'); // or
// By unicode
Emojis().getOne('1F600'); // or
// By name or apple name (ignore-case)
Emojis().getOne('Grinning Face'); // or
Emojis().getOne('grinning face'); // or
// By also known as (ignore-case)
Emojis().getOne('Happy Face'); // or
Emojis().getOne('happy face'); // or
Emojis().getOne('Smiley Face'); // or
Emojis().getOne('smiley face'); // or
// By shortcode (ignore-colons)
Emojis().getOne(':grinning:'); // or
Emojis().getOne('grinning'); // or
Emojis().getOne('grinning_face'); /* [Emoji(
value: π,
unicode: 1F600,
name: Grinning Face,
appleName: Grinning Face,
alsoKnownAs: [Happy Face, Smiley Face],
group: Smileys & Emotion,
subgroup: face-smiling,
version: 8.0,
status: fully-qualified,
shortcodes: [
Shortcode(
platform: Default,
values: [grinning_face]
),
Shortcode(
platform: CLDR,
values: [grinning_face]
),
Shortcode(
platform: Discord,
values: [grinning]
),
Shortcode(
platform: Github,
values: [grinning]
),
Shortcode(
platform: Slack,
values: [grinning]
)]
)] */
Emojis().getOneOrNull() #
Equivalent of getOne() with null safety:
Emojis().getOneOrNull('π')?.name; // Grinning face
Emojis().getOneOrNull('some unknown value')?.name; // null
Emojis().byGroup() #
Emojis().byGroup(Group.smileysAndEmotion); // [Emoji(value: π, ...), Emoji(value: π, ...), ...]
//or use convenient getters:
Emojis().smileysAndEmotion; // [Emoji(value: π, ...), Emoji(value: π, ...), ...]
Emojis().bySubgroup() #
Emojis().bySubgroup(Subgroup.faceSmiling); // [Emoji(value: π, ...), Emoji(value: π, ...), ...]
//or use convenient getters:
Emojis().faceSmiling; // [Emoji(value: π, ...), Emoji(value: π, ...), ...]
Emojis().byVersion() #
Emojis().byVersion(Version.v6_0); // [Emoji(value: π, ...), Emoji(value: π, ...), ...]
//or use convenient getters:
Emojis().v6_0; // [Emoji(value: π, ...), Emoji(value: π, ...), ...]
Emojis().byStatus() #
Emojis().byStatus(Status.fullyQualified); // [Emoji(value: π, ...), Emoji(value: π, ...), ...]
//or use convenient getters:
Emojis().fullyQualified; // [Emoji(value: π, ...), Emoji(value: π, ...), ...]
emojis
extension #
Simple emojis
extension that you can use to manipulate emojis on any text:
'textπtextπ€¦πΎββοΈtext'.emojis
.contains // true
.only // false
.onlyOne // false
.count // 2
.split // [text, text, text]
.remove // texttexttext
.extract // [π, π€¦πΎββοΈ]
.first // π
.second // π€¦πΎββοΈ
.penultimate // π
.last // π€¦πΎββοΈ
.anyOf(['π', 'π']) // true
.everyOf(['π', 'π']) // false
.replace('---') // text---text---text
.replaceWith({'π':'ABC' , 'π€¦πΎββοΈ':'123'}) // textABCtext123text
.replaceWhere((e) => e.value == 'π€¦πΎββοΈ' ? '__' : null); // textπtext__text
.splitMapJoin(
onMatch: (_) => '_emoji_',
onNonMatch: (s) => s.toUpperCase(),
) // TEXT_emoji_TEXT_emoji_TEXT
.get
.unicodes // [1F600, 1F926 1F3FE 200D 2640 FE0F]
.names // [Grinning Face, Woman Facepalming: Medium-Dark Skin Tone]
.appleNames // [Grinning Face]
.alsoKnownAs // [Happy Face, Smiley Face]
.groups // [Group.smileysAndEmotion, Group.peopleAndBody]
.values // [Smileys & Emotion, People & Body]
.subgroups // [Subgroup.faceSmiling, Subgroup.personGesture]
.values // [face-smiling, person-gesture]
.shortcodes // [:grinning_face:, :woman_facepalming_medium_dark_skin_tone:]
.cldrShortcodes // [:grinning_face:, :woman_facepalming_tone4:]
.discordShortcodes // [:grinning:, :woman_facepalming_tone4:]
.githubShortcodes // [:grinning:]
.slackShortcodes // [:grinning:, :woman-facepalming::skin-tone-5:]
emojis.contains #
'πtextπ'.emojis.contains; // true
'text'.emojis.contains; // false
emojis.only #
'π'.emojis.only; // true
'π π π'.emojis.only; // true
'text π π π text'.emojis.only; // false
'text'.emojis.only; // false
emojis.onlyOne #
'π'.emojis.onlyOne; // true
'π π π'.emojis.onlyOne; // false
'text π π π text'.emojis.onlyOne; // false
'text'.emojis.onlyOne; // false
emojis.count #
'text π π π text'.emojis.count; // 3
emojis.remove #
'textπ teπxt πtext'.emojis.remove; // text text text
emojis.split #
'textπtext'.emojis.split; // [text, text]
emojis.extract #
'ποΈteππ»xtππΌteππ½xtππΎteππΏxt'.emojis.extract // [π, ππ», ππΌ, ππ½, ππΎ, ππΏ]
.first // π
.second // ππ»
.third // ππΌ
.fourth // ππ½
.fifth // ππΎ
.sixth // ππΏ
.penultimate // ππΎ
.last // ππΏ
emojis.get #
'πtext'.emojis.get; /* [Emoji(
value: π,
unicode: 1F600,
name: Grinning Face,
appleName: Grinning Face,
alsoKnownAs: [Happy Face, Smiley Face],
group: Smileys & Emotion,
subgroup: face-smiling,
version: 8.0,
status: fully-qualified,
shortcodes: [
Shortcode(
platform: Default,
values: [grinning_face]
),
Shortcode(
platform: CLDR,
values: [grinning_face]
),
Shortcode(
platform: Discord,
values: [grinning]
),
Shortcode(
platform: Github,
values: [grinning]
),
Shortcode(
platform: Slack,
values: [grinning]
)]
)] */
emojis.get.unicodes
'πtext'.emojis.get.unicodes; // [1F600]
emojis.get.names
'πtext'.emojis.get.names; // [Grinning Face]
emojis.get.appleNames
'πtext'.emojis.get.appleNames; // [Grinning Face]
emojis.get.alsoKnownAs
'πtext'.emojis.get.alsoKnownAs; // [Happy Face, Smiley Face]
emojis.get.groups
'πtext'.emojis.get.groups; // [Group.smileysAndEmotion]
'πtext'.emojis.get.groups.values; // [Smileys & Emotion]
emojis.get.subgroups
'πtext'.emojis.get.subgroups; // [Subgroup.faceSmiling]
'πtext'.emojis.get.subgroups.values; // [face-smiling]
emojis.get.shortcodes
// Default (emoji name in snake_case)
'πtextπ€¦πΎββοΈ'.emojis.get.shortcodes; // [:grinning_face:, :woman_facepalming_medium_dark_skin_tone:]
// CLDR
'πtextπ€¦πΎββοΈ'.emojis.get.cldrShortcodes; // [:grinning_face:, :woman_facepalming_tone4:]
// Discord
'πtextπ€¦πΎββοΈ'.emojis.get.discordShortcodes; // [:grinning:, :woman_facepalming_tone4:]
// Github (no skin-tone shortcodes)
'πtextπ€¦πΎββοΈ'.emojis.get.githubShortcodes; // [:grinning:]
// Slack
'πtextπ€¦πΎββοΈ'.emojis.get.slackShortcodes; // [:grinning:, :woman-facepalming::skin-tone-5:]
emojis.anyOf() #
'ποΈtext'.emojis.anyOf(['π']); // true
'πtext'.emojis.anyOf(['π', 'π']); // true
'ποΈteππ»xtππΌteππ½xtππΎteππΏxt'.emojis.anyOf(['π']); // false
emojis.everyOf() #
'ποΈtext'.emojis.everyOf(['π']); // true
'πtextπ'.emojis.everyOf(['π', 'π']); // true
'πtext'.emojis.everyOf(['π', 'π']); // false
emojis.splitMapJoin() #
'textπtext'.emojis.splitMapJoin(
onMatch: (_) => '_emoji_',
onNonMatch: (s) => s.toUpperCase(),
); // TEXT_emoji_TEXT
emojis.replace() #
'πtextπ'.emojis.replace('_'); // _οΈtext_
emojis.replaceWith() #
'πtextππ»textπ'.emojis.replaceWith({'π':'ABC', 'ππ»':'123'}); // ABCtext123textABC
emojis.replaceWhere() #
'πtextππ»textπ'.emojis.replaceWhere((e) => e.value == 'ππ»' ? '_OK_' : null); // πtext_OK_textπ
'πtextππ»textπ'.emojis.replaceWhere((e) => {'π':'ABC', 'ππ»':'123'}[e.value]); // ABCtext123textABC
emojis.toShortcodes() #
// Default (emoji name in snake_case)
'πtextπ€¦πΎββοΈ'.emojis.toShortcodes(); // :grinning_face:text:woman_facepalming_medium_dark_skin_tone:
// CLDR
'πtextπ€¦πΎββοΈ'.emojis.toCLDRShortcodes(); // :grinning_face:text:woman_facepalming_tone4:
// Discord
'πtextπ€¦πΎββοΈ'.emojis.toDiscordShortcodes(); // :grinning:text:woman_facepalming_tone4:
// Github (no skin-tone shortcodes)
'πtextπ€¦πΎββοΈ'.emojis.toGithubShortcodes(); // :grinning:textπ€¦πΎββοΈ
// Slack
'πtextπ€¦πΎββοΈ'.emojis.toSlackShortcodes(); // :grinning:text:woman-facepalming::skin-tone-5:
emojis.fromShortcodes() #
// Default
'text:woman_facepalming_medium_dark_skin_tone:text'.emojis.fromShortcodes(); // textπ€¦πΎββοΈtext
// CLDR or Discord
'text:woman_facepalming_tone4:text'.emojis.fromShortcodes(); // textπ€¦πΎββοΈtext
// Slack
'text:woman-facepalming::skin-tone-5:text'.emojis.fromShortcodes(); // textπ€¦πΎββοΈtext