PackageTrack
Sign in Get early access

emoji_extension

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

1.3.0 6.8K downloads/mo #3462 most downloaded on pub.dev Nikoro/emoji_extension

What this package is like to depend on

Last release 9 months ago

26 Nov 2025

Release timing varies

gaps range from 9 days to 11 months

Nearly every release is documented

notes for 11 of 11 stable releases

Nothing withdrawn

no release was ever pulled

3 years old

11 releases · first in 2023

1 release in the last 12 months

see the full history below

Release timeline

11 releases · May 2023 to Nov 2025
2024 2025 2026
Release Pre-release

Releases

latest 11
  1. 1.3.0 26 Nov 2025
    Release notes
    • Updated emoji dataset to newest Unicode 17.0
    • Add new emoji getter methods for improved accessibility
    • Upgrade Flutter examples to latest stable version
    • Migrate Android build configuration to Kotlin DSL
    • Update SDK constraints to ^3.4.0 for all packages
    • Refactor emoji data structure and version tracking
    • Enhance test coverage for new emoji getters
    Open source →
    Release notes
    • Updated emoji dataset to newest Unicode 17.0
    • Add new emoji getter methods for improved accessibility
    • Upgrade Flutter examples to latest stable version
    • Migrate Android build configuration to Kotlin DSL
    • Update SDK constraints to ^3.4.0 for all packages
    • Refactor emoji data structure and version tracking
    • Enhance test coverage for new emoji getters
    Open source →
  2. 1.2.0 22 Dec 2024
    Release notes
    • update dependencies, export emojis regex

    • update emoji data to version 16.0

    • add tests for regexes

    • bump version to 1.2.0

    • fix flutter examples

    • update CHANGELOG

    Open source →
    Release notes
    • Updated emoji dataset to newest Unicode 16.0
    • Updated dependencies
    • Require Dart ^3.4.0
    • Exported emoji regex:
    final regex = Emojis.regex;
      // print(regex); // RegExp: pattern=[#*\d]\uFE0F?\u20E3|[\xA9\...
    
    Open source →
  3. 1.1.1 19 Apr 2024
    Release notes
    • change demo files from *gif to *webp format

    • update CHANGELOG

    • bump version to 1.1.1

    Open source →
    Release notes
    • Changed *gif demo files to *webp format
    Open source →
  4. 1.1.0 18 Apr 2024
    Release notes
    • update dependencies

    • update README

    • add youtube tutorial

    • add emoji overview app example

    • add emoji chat app example

    • update CHANGELOG

    • bump version to 1.1.0

    Open source →
    Release notes

    <p align="center"> <a href="https://youtu.be/fLPVkksEpJw"><img src="https://raw.githubusercontent.com/nikoro/emoji_extension/develop/images/youtube.webp" width="600"/></a> </p>

    Open source →
  5. 1.0.0 08 Apr 2024
    Release notes
    • change Emojis() class API to static -> Generally Emojis() becomes simply Emojis (without brackets at the end)

    • change Emojis().get to Emojis.all:

    • remove any, replaceEach, hasAny, hasEach and everyOf

    • introduce new Emoji() constructor that takes single emoji as parameter

    • add shortcut methods and getters from package collection

    • export package collection

    • add topics and small logo

    • update CHANGELOG

    • update README

    • bump version to 1.0.0

    Open source →
    Release notes

    BREAKING CHANGES:

    Changed Emojis() class API to static

    Generally Emojis() becomes simply Emojis (without brackets at the end):

    /*Old*/ Emojis()                   /*New*/ Emojis
    
    /*Old*/ Emojis().smileysAndEmotion /*New*/ Emojis.smileysAndEmotion
    
    /*Old*/ Emojis().groups            /*New*/ Emojis.groups
    
    /*Old*/ Emojis().getOne()          /*New*/ Emojis.getOne()
    
    // etc...
    

    Changed Emojis().get to Emojis.all:

    /*Old*/ Emojis().get        /*New*/ Emojis.all
    
    /*Old*/ Emojis().get.values /*New*/ Emojis.all.values
    
    /*Old*/ Emojis().get.names  /*New*/ Emojis.all.names
    
    // etc...
    

    Removed any getter -> use contains instead

    Removed replaceEach method -> use replaceWith instead

    Removed hasAny method -> use anyOf instead

    Removed hasEach method -> use containsOf instead

    Removed everyOf method -> use containsOf instead

    • Introduced new Emoji() constructor that takes single emoji as parameter
    Emoji('🦊')
               .name // Fox
               .appleName // Fox Face
               .unicode // 1F98A
               .shortcode // :fox:
               .discordShortcode // :fox:
               .discordShortcodes // [:fox:, :fox_face:]
                                 .first // :fox:
                                 .second // :fox_face:
               .version // Version.v9_0
                       .value // 9.0
               .isAnimal // true
               .isFlag // false
               .isFlower // false
               .isFruit // false
               .isGeometric // false
               .isMan // false
               .isWoman // false
               .isVegetable // false
               .isPerson // false
               .isMultiPerson // false
               .isSymbol // false
               .isV9_0 // true
               .hasBeard // false
               .hasFace // true
               .hasHairStyle // false
               .hasSkinTone // false
               .hasColor // false
               .color // null
               .skinTone // null
               .hairStyle // null
    
    • Added new methods and getters:

    first

    '🔴te👍🏻xt👍🏼te👍🏽xt👍🏾te👍🏿xt'.emojis.first // Emoji(value: 🔴, ...)
    

    firstOrNull

    '🔴te👍🏻xt👍🏼te👍🏽xt👍🏾te👍🏿xt'.emojis.firstOrNull // Emoji(value: 🔴, ...)
    'text'.emojis.firstOrNull; // null
    

    second

    '👍️te🔴xt👍🏼te👍🏽xt👍🏾te👍🏿xt'.emojis.second // Emoji(value: 🔴, ...)
    

    secondOrNull

    '👍️te🔴xt👍🏼te👍🏽xt👍🏾te👍🏿xt'.emojis.secondOrNull // Emoji(value: 🔴, ...)
    'text'.emojis.secondOrNull; // null
    

    third

    '👍️te🔴xt👍🏼te👍🏽xt👍🏾te👍🏿xt'.emojis.third // Emoji(value: 🔴, ...)
    

    thirdOrNull

    '👍️te🔴xt👍🏼te👍🏽xt👍🏾te👍🏿xt'.emojis.thirdOrNull // Emoji(value: 🔴, ...)
    'text'.emojis.thirdOrNull; // null
    

    fourth

    '👍️te👍🏻xt👍🏼te🔴xt👍🏾te👍🏿xt'.emojis.fourth // Emoji(value: 🔴, ...)
    

    fourthOrNull

    '👍️te👍🏻xt👍🏼te🔴xt👍🏾te👍🏿xt'.emojis.fourthOrNull // Emoji(value: 🔴, ...)
    'text'.emojis.fourthOrNull; // null
    

    fifth

    '👍️te👍🏻xt👍🏼te👍🏽xt🔴te👍🏿xt'.emojis.fifth // Emoji(value: 🔴, ...)
    

    fifthOrNull

    '👍️te👍🏻xt👍🏼te👍🏽xt🔴te👍🏿xt'.emojis.fifthOrNull // Emoji(value: 🔴, ...)
    'text'.emojis.fifthOrNull; // null
    

    sixth

    '👍️te👍🏻xt👍🏼te👍🏽xt👍🏾te🔴xt'.emojis.sixth // Emoji(value: 🔴, ...)
    

    sixthOrNull

    '👍️te👍🏻xt👍🏼te👍🏽xt👍🏾te🔴xt'.emojis.sixthOrNull // Emoji(value: 🔴, ...)
    'text'.emojis.sixthOrNull; // null
    

    penultimate

    '👍️te👍🏻xt👍🏼te👍🏽xt🔴te👍🏿xt'.emojis.penultimate // Emoji(value: 🔴, ...)
    

    penultimateOrNull

    '👍️te👍🏻xt👍🏼te👍🏽xt🔴te👍🏿xt'.emojis.penultimateOrNull // Emoji(value: 🔴, ...)
    'text'.emojis.penultimateOrNull; // null
    

    last

    '👍️te👍🏻xt👍🏼te👍🏽xt👍🏾te🔴xt'.emojis.last // Emoji(value: 🔴, ...)
    

    lastOrNull

    '👍️te👍🏻xt👍🏼te👍🏽xt👍🏾te🔴xt'.emojis.lastOrNull // Emoji(value: 🔴, ...)
    'text'.emojis.lastOrNull; // null
    

    removeFirst

    '🔴te👍🏻xt👍🏼te👍🏽xt👍🏾te👍🏿xt'.emojis.removeFirst; // te👍🏻xt👍🏼te👍🏽xt👍🏾te👍🏿xt
    

    removeSecond

    '👍️te🔴xt👍🏼te👍🏽xt👍🏾te👍🏿xt'.emojis.removeSecond; // 👍️text👍🏼te👍🏽xt👍🏾te👍🏿xt
    

    removeThird

    '👍️te👍🏻xt🔴te👍🏽xt👍🏾te👍🏿xt'.emojis.removeThird; // 👍️te👍🏻xtte👍🏽xt👍🏾te👍🏿xt
    

    removeFourth

    '👍️te👍🏻xt👍🏼te🔴xt👍🏾te👍🏿xt'.emojis.removeFourth; // 👍️te👍🏻xt👍🏼text👍🏾te👍🏿xt
    

    removeFifth

    '👍️te👍🏻xt👍🏼te👍🏽xt🔴te👍🏿xt'.emojis.removeFifth; // 👍️te👍🏻xt👍🏼te👍🏽xtte👍🏿xt
    

    removeSixth

    '👍️te👍🏻xt👍🏼te👍🏽xt👍🏾te🔴xt'.emojis.removeSixth; // 👍️te👍🏻xt👍🏼te👍🏽xt👍🏾text
    

    removePenultimate

    '👍️te👍🏻xt👍🏼te👍🏽xt🔴te👍🏿xt'.emojis.removePenultimate; // 👍️te👍🏻xt👍🏼te👍🏽xtte👍🏿xt
    

    removeLast

    '👍️te👍🏻xt👍🏼te👍🏽xt👍🏾te🔴xt'.emojis.removeLast; // 👍️te👍🏻xt👍🏼te👍🏽xt👍🏾text
    

    any()

    '😀text🤦🏾‍♀️'.emojis.any((e) => e.value == '😀'); // true
    '😀text🤦🏾‍♀️'.emojis.any((e) => e.value == '👍🏻'); // false
    

    containsOf()

    '😀text🤦🏾‍♀️'.emojis.containsOf(['😀']); // true
    '😀text🤦🏾‍♀️'.emojis.containsOf(['😀', '🤦🏾‍♀️']); // true
    '😀text🤦🏾‍♀️'.emojis.containsOf(['😀', '👍🏻']); // false
    '😀text🤦🏾‍♀️'.emojis.containsOf(['👍🏻']); // false
    

    containsExactlyOf()

    '😀text🤦🏾‍♀️'.emojis.containsExactlyOf(['😀']); // false
    '😀text🤦🏾‍♀️'.emojis.containsExactlyOf(['😀', '🤦🏾‍♀️']); // true
    '😀text🤦🏾‍♀️text😀'.emojis.containsExactlyOf(['😀', '🤦🏾‍♀️']); // true
    '😀text🤦🏾‍♀️'.emojis.containsExactlyOf(['👍🏻']); // false
    

    containsOne()

    '😀text🤦🏾‍♀️text😀'.emojis.containsOne((e) => e.value == '🤦🏾‍♀️'); // true
    '😀text🤦🏾‍♀️text😀'.emojis.containsOne((e) => e.value == '👍🏻'); // false
    '😀text🤦🏾‍♀️text😀'.emojis.containsOne((e) => e.value == '😀'); // false
    

    containsOneOf()

    '😀text🤦🏾‍♀️'.emojis.containsOneOf({'🤦🏾‍♀️'}); // true
    '😀text🤦🏾‍♀️'.emojis.containsOneOf({'😀', '🤦🏾‍♀️'}); // true
    '😀text🤦🏾‍♀️'.emojis.containsOneOf('😀', '🤦🏾‍♀️', '👍🏻'}); // false
    '😀text🤦🏾‍♀️text😀'.emojis.containsOneOf({'😀'}); // false
    

    containsExactlyOne()

    '😀text'.emojis.containsExactlyOne((e) => e.value == '😀'); // true
    '😀text🤦🏾‍♀️'.emojis.containsExactlyOne((e) => e.value == '😀'); // false
    'text'.emojis.containsExactlyOne((e) => e.value == '😀'); // false
    

    containsExactlyOneOf()

    '😀text🤦🏾‍♀️'.emojis.containsExactlyOneOf({'😀', '🤦🏾‍♀️'}); // true
    '😀text🤦🏾‍♀️text😀'.emojis.containsExactlyOneOf({'😀', '🤦🏾‍♀️'}); // false
    '😀text🤦🏾‍♀️'.emojis.containsExactlyOneOf({'😀'}); // false
    '😀text🤦🏾‍♀️'.emojis.containsExactlyOneOf({'😀', '👍🏻'}); // false
    

    countWhere()

    '😀text🤦🏾‍♀️text😀'.emojis.countWhere((e) => e.value == '😀'); // 2
    

    countWhereIndexed()

    '😀text🤦🏾‍♀️text😀'.emojis.countWhereIndexed((i, e) => i == 0 && e.value == '😀'); // 1
    

    every()

    '😀text😀'.emojis.every((e) => e.value == '😀'); // true
    '😀text🤦🏾‍♀️'.emojis.every((e) => e.value == '😀'); // false
    '😀text🤦🏾‍♀️'.emojis.every((e) => e.value == '👍🏻'); // false
    

    firstWhere()

    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.firstWhere((e) => e.name.contains('Woman')); // Emoji(value: 🤦🏾‍♀️, ...)
    

    firstWhereIndexed()

    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.firstWhereIndexed((i, e) => i > 0 && e.name.contains('Woman')); // Emoji(value: 🤦🏻‍♀️, ...)
    

    firstWhereOrNull()

    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.firstWhereOrNull((e) => e.name.contains('Woman')); // Emoji(value: 🤦🏾‍♀️, ...)
    
    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.firstWhereOrNull((e) => e.value == '👍🏻'); // null
    

    firstWhereIndexedOrNull()

    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.firstWhereIndexedOrNull((i, e) => i == 0 && e.name.contains('Woman')); // Emoji(value: 🤦🏾‍♀️, ...)
    
    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.firstWhereIndexedOrNull((i, e) => i == 0 && e.value == '😀'); // null
    

    fold()

    '😀text🤦🏾‍♀️'.emojis.fold('start', (p, c) => p + c.value); // start😀🤦🏾‍♀️
    

    foldIndexed()

    '😀text🤦🏾‍♀️'.emojis.foldIndexed('start', (i, p ,c) => '$p${c.value}$i'); // start😀0🤦🏾‍♀️1
    

    forEach()

    '😀text🤦🏾‍♀️'.emojis.forEach((e) => print(e.value)); // 😀 🤦🏾‍♀️
    

    forEachIndexed()

    '😀text🤦🏾‍♀️'.emojis.forEachIndexed(i,e) => print('$i:${e.value}')); // 0:😀 1:🤦🏾‍♀️
    

    forEachWhile()

    '😀text🤦🏾‍♀️text😀'.emojis.forEachWhile((e) {
                                              print(e.value);
                                              return e.value == '😀';
                                              }); // 😀 🤦🏾‍♀️
    

    forEachIndexedWhile()

    '😀text🤦🏾‍♀️text😀'.emojis.forEachIndexedWhile((i, e) {
                                                        print('$i:${e.value}');
                                                        return e.value == '😀';
                                                        }); // 0:😀 1:🤦🏾‍♀️
    

    join()

    '😀text🤦🏾‍♀️'.emojis.join((e) => e.value, 
                                  separator: '.', 
                                  prefix: 'prefix', 
                                  suffix: 'suffix'); // 'prefix😀.🤦🏾‍♀️suffix'
    

    map()

    '😀text🤦🏾‍♀️'.emojis.map((e) => 'Emoji: ${e.name}'); // [Emoji: Grinning Face, Emoji: Woman Facepalming: Medium-Dark Skin Tone]
    

    mapIndexed()

    '😀text🤦🏾‍♀️'.emojis.mapIndexed((i, e) => '$i: ${e.name}'); // [0: Grinning Face, 1: Woman Facepalming: Medium-Dark Skin Tone]
    

    none()

    '😀text🤦🏾‍♀️'.emojis.none((e) => e.value == '👍🏻'); // true
    '😀text🤦🏾‍♀️'.emojis.none((e) => e.value == '😀'); // false
    

    noneOf()

    '😀text🤦🏾‍♀️'.emojis.noneOf(['👍🏻']); // true
    '😀text🤦🏾‍♀️'.emojis.noneOf(['👍🏻', '🤦🏾‍♀️']); // false
    '😀text🤦🏾‍♀️'.emojis.noneOf(['😀', '🤦🏾‍♀️']); // false
    

    removeAt()

    '😀text🤦🏾‍♀️'.emojis.removeAt(0); // text🤦🏾‍♀️
    '😀text🤦🏾‍♀️'.emojis.removeAt(10); // 😀text🤦🏾‍♀️
    

    removeFromEnd()

    '😀text🤦🏾‍♀️'.emojis.removeFromEnd(0); // 😀text
    '😀text🤦🏾‍♀️'.emojis.removeFromEnd(10); // 😀text🤦🏾‍♀️
    

    removeEveryOf()

    '😀text🤦🏾‍♀️text👍🏻text😀'.emojis.removeEveryOf(['😀', '👍🏻']); // text🤦🏾‍♀️texttext
    

    removeWhereIndexed()

    '😀text🤦🏾‍♀️text😀'.emojis.removeWhereIndexed((i, e) => i == 0 && e.value == '😀'); // text🤦🏾‍♀️text😀
    

    replaceWhereIndexed()

    '😀text🤦🏾‍♀️text😀'.emojis.replaceWhereIndexed((i, e) => i == 1 ? '_123_' : null); // 😀text_123_text😀
    

    skip()

    '😀text🤦🏾‍♀️text👍🏻'.emojis.skip(1); // [Emoji(value: 🤦🏾‍♀️, ...), Emoji(value: 👍🏻, ...)]
    

    skipLast()

    '😀text🤦🏾‍♀️text👍🏻'.emojis.skipLast(1); // [Emoji(value: 😀, ...), Emoji(value: 🤦🏾‍♀️, ...)]
    

    skipWhile()

    '😀text🤦🏾‍♀️text👍🏻'.emojis.skipWhile((e) => e.value == '😀'); // [Emoji(value: 🤦🏾‍♀️, ...), Emoji(value: 👍🏻, ...)]
    

    some()

    '😀text🤦🏾‍♀️'.emojis.some((e) => e.value == '😀'); // true
    '😀text🤦🏾‍♀️'.emojis.some((e) => e.value == '👍🏻'); // false
    

    someOf()

    '😀text🤦🏾‍♀️'.emojis.someOf(['😀']); // true
    '😀text🤦🏾‍♀️'.emojis.someOf(['😀', '👍🏻']); // true
    '😀text🤦🏾‍♀️'.emojis.someOf(['👍🏻']); // false
    

    splitWhere()

    '😀text🤦🏾‍♀️text😀'.emojis.splitWhere((e) => e.value == '🤦🏾‍♀️'); // [😀text, text😀]
    

    splitWhereIndexed()

    '😀text🤦🏾‍♀️text😀'.emojis.splitWhereIndexed((i, e) => i == 1 && e.value == '🤦🏾‍♀️'); // [😀text, text😀]
    

    lastWhere()

    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.lastWhere((e) => e.name.contains('Woman')); // Emoji(value: 🤦🏻‍♀️, ...)
    

    lastWhereIndexed()

    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.lastWhereIndexed((i, e) => i == 0 && e.name.contains('Woman')); // Emoji(value: 🤦🏾‍♀️, ...)
    

    lastWhereOrNull()

    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.lastWhereOrNull((e) => e.name.contains('Woman')); // Emoji(value: 🤦🏻‍♀️, ...)
    
    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.lastWhereOrNull((e) => e.value == '👍🏻'); // null
    

    lastWhereIndexedOrNull()

    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.lastWhereIndexedOrNull((i, e) => i == 0 && e.name.contains('Woman')); // Emoji(value: 🤦🏾‍♀️, ...)
    
    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.lastWhereIndexedOrNull((i, e) => i == 0 && e.value == '😀'); // null
    

    take()

    '😀text🤦🏾‍♀️text👍🏻'.emojis.take(2); // [Emoji(value: 😀, ...), Emoji(value: 🤦🏾‍♀️, ...)]
    

    takeLast()

    '😀text🤦🏾‍♀️text👍🏻'.emojis.takeLast(2); // [Emoji(value: 🤦🏾‍♀️, ...), Emoji(value: 👍🏻, ...)]
    

    takeWhile()

    '😀text🤦🏾‍♀️text👍🏻'.emojis.takeWhile((e) => e.value == '😀'); // [Emoji(value: 😀, ...)]
    

    where()

    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.where((e) => e.name.contains('Woman')); // [Emoji(value: 🤦🏾‍♀️, ...), Emoji(value: 🤦🏻‍♀️, ...)]
    

    whereIndexed()

    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.whereIndexed((i, e) => i == 0 && e.name.contains('Woman')); // [Emoji(value: 🤦🏾‍♀️, ...)]
    

    whereNot()

    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.whereNot((e) => e.name.contains('Woman')); // [Emoji(value: 😀, ...)]
    

    whereNotIndexed()

    '🤦🏾‍♀️text😀text🤦🏻‍♀️'.emojis.whereNotIndexed((i, e) => i == 0 && e.name.contains('Woman')); // [Emoji(value: 😀, ...), Emoji(value: 🤦🏻‍♀️, ...)]
    
    Open source →
  6. 0.3.0 28 Mar 2024
    Release notes
    • update emoji data to unicode 15.1

    • add unicode versions and emoji statuses

    • add parameter apple name to emoji object

    • add parameter alsoKnownAs to emoji object

    • change emoji data source to pure dart instead of json

    • add copyWith method to Emoji & Shortcode classes, add tests, update README

    • add additional ordinal numbers iterable extensions

    • add appleNames & alsoKnownAs getters

    • add replaceWhere method

    • update dependencies

    • update README

    • rename removeEach to removeWhere,

    • rename any to contains

    • rename hasAny to anyOf and hasEach to everyOf

    Open source →
    Release notes
    • Updated emoji dataset to newest Unicode 15.1
    • Extended data about emoji including:
      • apple name
      • also known as
      • version
      • status

    Example:

    Emoji(
      value: 😆,
      unicode: 1F606,
      name: Grinning Squinting Face,
      appleName: Grinning Face with Squinting Eyes,
      alsoKnownAs: [><, Closed-Eyes Smile, Big Grin, Laughing, XD],
      group: Smileys & Emotion,
      subgroup: face-smiling,
      version: 6.0,
      status: fully-qualified,
      shortcodes: [
        Shortcode(
        platform: Default,
        values: [grinning_squinting_face]
      ), 
        Shortcode(
        platform: CLDR,
        values: [grinning_squinting_face]
      ), 
        Shortcode(
        platform: Discord,
        values: [laughing, satisfied]
      ), 
        Shortcode(
        platform: Github,
        values: [laughing, satisfied]
      ), 
        Shortcode(
        platform: Slack,
        values: [laughing, satisfied]
      )]
    )
    
    • Added replaceWhere method:
    '😀_text_👍🏻'.emojis.replaceWhere((e) => e.value == '👍🏻' ? 'OK' : null); // 😀_text_OK
    
    '😀_text_👍🏻'.emojis.replaceWhere((e) => {'😀':'ABC', '👍🏻':'123'}[e.value]); // ABC_text_123
    

    Warning

    Deprecated any getter -> use contains instead

    Deprecated replaceEach method -> use replaceWith instead

    Deprecated hasAny method -> use anyOf instead

    Deprecated hasEach method -> use everyOf instead

    Open source →
  7. 0.2.0 21 Mar 2024
    Release notes
    • remove spaces at the the end of test descriptions

    • update README

    • update CHANGELOG

    • bump version to 0.2.0

    Open source →
    Release notes
    • Added optional fallback function onUnknownShortcode when parsing String with unknown shortcode:
    const text = ':man: :this-shortcode-does-not-exist: :woman:';
    final result = text.fromShortcodes(onUnknownShortcode: (_) => '🤷');
    print(result); // '👨 🤷 👩'
    
    • Added support for parsing chained emojis:
    const text = ':otter::woman-facepalming::skin-tone-5::santa::dancer::skin-tone-4::female-astronaut::skin-tone-5:';
    final result = text.fromShortcodes();
    print(result); // '🦦🤦🏾‍♀️🎅💃🏽👩🏾‍🚀'
    
    Open source →
  8. 0.1.3 04 Feb 2024
    Release notes
    • update description

    • update README

    • update CHANGELOG

    • bump version to 0.1.3

    Open source →
    Release notes
    • Updated description
    • Updated README
    Open source →
  9. 0.1.2 04 Feb 2024
    Release notes
    • Updated dependencies
    • Updated the SDK constraint to '>=2.18.6 <4.0.0'
    Open source →
  10. 0.1.1 10 May 2023
    Release notes
    • Formatted code
    • Updated description
    • Updated lint rules
    • Improved documentation
    • Improved README
    Open source →
  11. 0.1.0 09 May 2023
    Release notes

    Initial release 🎉

    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive