Skip to content

Commit c905b88

Browse files
committed
feat: added new EmojiTextFormatter
1 parent bf5f645 commit c905b88

File tree

8 files changed

+53
-3
lines changed

8 files changed

+53
-3
lines changed

.dart_tool/package_config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,7 @@
578578
"languageVersion": "3.0"
579579
}
580580
],
581-
"generated": "2023-10-29T14:11:33.675273Z",
581+
"generated": "2023-10-31T10:42:03.017184Z",
582582
"generator": "pub",
583583
"generatorVersion": "3.1.5"
584584
}

.flutter-plugins-dependencies

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"file_picker","path":"/Users/kishor/.pub-cache/hosted/pub.dev/file_picker-6.0.0/","native_build":true,"dependencies":[]},{"name":"image_picker_ios","path":"/Users/kishor/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.8/","native_build":true,"dependencies":[]}],"android":[{"name":"file_picker","path":"/Users/kishor/.pub-cache/hosted/pub.dev/file_picker-6.0.0/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"flutter_plugin_android_lifecycle","path":"/Users/kishor/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.15/","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"/Users/kishor/.pub-cache/hosted/pub.dev/image_picker_android-0.8.7+4/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]}],"macos":[{"name":"file_selector_macos","path":"/Users/kishor/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.3+1/","native_build":true,"dependencies":[]},{"name":"image_picker_macos","path":"/Users/kishor/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1/","native_build":false,"dependencies":["file_selector_macos"]}],"linux":[{"name":"file_selector_linux","path":"/Users/kishor/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.2/","native_build":true,"dependencies":[]},{"name":"image_picker_linux","path":"/Users/kishor/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1/","native_build":false,"dependencies":["file_selector_linux"]}],"windows":[{"name":"file_selector_windows","path":"/Users/kishor/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3/","native_build":true,"dependencies":[]},{"name":"image_picker_windows","path":"/Users/kishor/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1/","native_build":false,"dependencies":["file_selector_windows"]}],"web":[{"name":"file_picker","path":"/Users/kishor/.pub-cache/hosted/pub.dev/file_picker-6.0.0/","dependencies":[]},{"name":"image_picker_for_web","path":"/Users/kishor/.pub-cache/hosted/pub.dev/image_picker_for_web-3.0.0/","dependencies":[]}]},"dependencyGraph":[{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]}],"date_created":"2023-10-29 19:56:33.746372","version":"3.13.9"}
1+
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"file_picker","path":"/Users/kishor/.pub-cache/hosted/pub.dev/file_picker-6.0.0/","native_build":true,"dependencies":[]},{"name":"image_picker_ios","path":"/Users/kishor/.pub-cache/hosted/pub.dev/image_picker_ios-0.8.8/","native_build":true,"dependencies":[]}],"android":[{"name":"file_picker","path":"/Users/kishor/.pub-cache/hosted/pub.dev/file_picker-6.0.0/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"flutter_plugin_android_lifecycle","path":"/Users/kishor/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.15/","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"/Users/kishor/.pub-cache/hosted/pub.dev/image_picker_android-0.8.7+4/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]}],"macos":[{"name":"file_selector_macos","path":"/Users/kishor/.pub-cache/hosted/pub.dev/file_selector_macos-0.9.3+1/","native_build":true,"dependencies":[]},{"name":"image_picker_macos","path":"/Users/kishor/.pub-cache/hosted/pub.dev/image_picker_macos-0.2.1/","native_build":false,"dependencies":["file_selector_macos"]}],"linux":[{"name":"file_selector_linux","path":"/Users/kishor/.pub-cache/hosted/pub.dev/file_selector_linux-0.9.2/","native_build":true,"dependencies":[]},{"name":"image_picker_linux","path":"/Users/kishor/.pub-cache/hosted/pub.dev/image_picker_linux-0.2.1/","native_build":false,"dependencies":["file_selector_linux"]}],"windows":[{"name":"file_selector_windows","path":"/Users/kishor/.pub-cache/hosted/pub.dev/file_selector_windows-0.9.3/","native_build":true,"dependencies":[]},{"name":"image_picker_windows","path":"/Users/kishor/.pub-cache/hosted/pub.dev/image_picker_windows-0.2.1/","native_build":false,"dependencies":["file_selector_windows"]}],"web":[{"name":"file_picker","path":"/Users/kishor/.pub-cache/hosted/pub.dev/file_picker-6.0.0/","dependencies":[]},{"name":"image_picker_for_web","path":"/Users/kishor/.pub-cache/hosted/pub.dev/image_picker_for_web-3.0.0/","dependencies":[]}]},"dependencyGraph":[{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]}],"date_created":"2023-10-31 16:27:03.087185","version":"3.13.9"}

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# 2.0.3
2+
- add new `EmojiTextFormatter` for allowing/denying emoji in text field
3+
14
# 2.0.2
25
- added `let` extension on Object
36
- code cleanup

lib/src/constants/constants.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export 'boolean.dart';
2+
export 'emoji.dart';
23
export 'sizes.dart';

lib/src/constants/emoji.dart

Lines changed: 4 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import 'package:flutter/services.dart';
2+
3+
import '../constants/constants.dart';
4+
5+
/// {@template emoji_text_formatter}
6+
/// A [TextInputFormatter] that allows/deny emoji characters.
7+
/// {@endtemplate}
8+
class EmojiTextFormatter extends TextInputFormatter {
9+
/// {@macro emoji_text_formatter}
10+
///
11+
/// Creates a formatter that allows emoji characters.
12+
///
13+
/// emoji characters are not replaced.
14+
const EmojiTextFormatter.allow() : _allow = true;
15+
16+
/// {@macro emoji_text_formatter}
17+
///
18+
/// Creates a formatter that denies only emoji characters.
19+
///
20+
/// emoji characters are replaced with empty string.
21+
const EmojiTextFormatter.deny() : _allow = false;
22+
23+
/// Whether this formatter allows or denies emoji characters.
24+
final bool _allow;
25+
26+
@override
27+
TextEditingValue formatEditUpdate(
28+
TextEditingValue oldValue, TextEditingValue newValue) {
29+
if (_allow) {
30+
return TextEditingValue(
31+
text: newValue.text, selection: newValue.selection);
32+
}
33+
var text = newValue.text.replaceAll(emojiRegExp, '');
34+
var selection = newValue.selection;
35+
if (oldValue.text == text) {
36+
selection = oldValue.selection;
37+
}
38+
return TextEditingValue(text: text, selection: selection);
39+
}
40+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
export 'case_text_formatters.dart';
2+
export 'emoji_text_formatter.dart';
23
export 'masked_text_formatter.dart';
34
export 'no_space_text_formatter.dart';

pubspec.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: fp_util
22
description: Utilities and Extensions for num,BuildContext,EdgeInsets,File,String. constants for horizontal and vertical spacing.
3-
version: 2.0.2
3+
version: 2.0.3
44

55
homepage: https://mkcli.kishormainali.com/
66
repository: https://github.com/kishormainali/fp_util
@@ -33,6 +33,7 @@ dependencies:
3333

3434
mask_text_input_formatter: ^2.5.0
3535

36+
3637
dev_dependencies:
3738
flutter_lints: ^3.0.0
3839
freezed: ^2.4.5

0 commit comments

Comments
 (0)