emoji_extension 0.3.0 copy "emoji_extension: ^0.3.0" to clipboard
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

Pub Package Build Status Code Coverage MIT License Unicode 15.1


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
7
likes
150
points
841
downloads

Publisher

verified publisherdominikkrajcer.com

Weekly Downloads

Emojis for Flutter & Dart (Unicode 15.1) + one, yet powerful emojis String extension

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

collection

More

Packages that depend on emoji_extension