| 1 | import 'package:flutter/material.dart'; |
| 2 | |
| 3 | extension Emoji on String { |
| 4 | static final REGEX_EMOJI = RegExp( |
| 5 | r'[\u{1f300}-\u{1f5ff}\u{1f900}-\u{1f9ff}\u{1f600}-\u{1f64f}' |
| 6 | r'\u{1f680}-\u{1f6ff}\u{2600}-\u{26ff}\u{2700}' |
| 7 | r'-\u{27bf}\u{1f1e6}-\u{1f1ff}\u{1f191}-\u{1f251}' |
| 8 | r'\u{1f004}\u{1f0cf}\u{1f170}-\u{1f171}\u{1f17e}' |
| 9 | r'-\u{1f17f}\u{1f18e}\u{3030}\u{2b50}\u{2b55}' |
| 10 | r'\u{2934}-\u{2935}\u{2b05}-\u{2b07}\u{2b1b}' |
| 11 | r'-\u{2b1c}\u{3297}\u{3299}\u{303d}\u{00a9}' |
| 12 | r'\u{00ae}\u{2122}\u{23f3}\u{24c2}\u{23e9}' |
| 13 | r'-\u{23ef}\u{25b6}\u{23f8}-\u{23fa}\u{200d}]+', |
| 14 | unicode: true, |
| 15 | ); |
| 16 | |
| 17 | bool _hasOnlyEmojis() { |
| 18 | final parsedText = this.replaceAll(' ', ''); |
| 19 | if (parsedText.isEmpty) return false; |
| 20 | for (final c in Characters(parsedText)) if (!REGEX_EMOJI.hasMatch(c)) return false; |
| 21 | return true; |
| 22 | } |
| 23 | |
| 24 | /// Returns true if the given text contains only emojis. |
| 25 | bool get hasOnlyEmojis => _hasOnlyEmojis(); |
| 26 | } |