emoji_extension 1.2.0
emoji_extension: ^1.2.0 copied to clipboard
Emojis for Flutter & Dart (Unicode 16.0) + one, yet powerful emojis String extension
1.2.0 #
- 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\...
1.1.1 #
- Changed *gif demo files to *webp format
1.0.0 #
BREAKING CHANGES:
Changed
Emojis()
class API to staticGenerally
Emojis()
becomes simplyEmojis
(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
toEmojis.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 -> usecontains
insteadRemoved
replaceEach
method -> usereplaceWith
insteadRemoved
hasAny
method -> useanyOf
insteadRemoved
hasEach
method -> usecontainsOf
insteadRemoved
everyOf
method -> usecontainsOf
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: π€¦π»ββοΈ, ...)]
0.3.0 #
- 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 -> usecontains
insteadDeprecated
replaceEach
method -> usereplaceWith
insteadDeprecated
hasAny
method -> useanyOf
insteadDeprecated
hasEach
method -> useeveryOf
instead
0.2.0 #
- 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); // 'π¦¦π€¦πΎββοΈπ
ππ½π©πΎβπ'
- Improved README
0.1.2 #
- Updated dependencies
- Updated the SDK constraint to '>=2.18.6 <4.0.0'
0.1.1 #
- Formatted code
- Updated description
- Updated lint rules
- Improved documentation
- Improved README
0.1.0 #
Initial release π