@@ -7,6 +7,178 @@ import '../mixins.dart';
77
88part 'text_input_validator_model.g.dart' ;
99
10+ /// Represents an action to perform when the user presses the action button on
11+ /// the keyboard.
12+ enum TextInputActionC {
13+ /// Logical meaning: There is no relevant input action for the current input
14+ /// source, e.g., [TextField] .
15+ ///
16+ /// Android: Corresponds to Android's "IME_ACTION_NONE". The keyboard setup
17+ /// is decided by the OS. The keyboard will likely show a return key.
18+ ///
19+ /// iOS: iOS does not have a keyboard return type of "none." It is
20+ /// inappropriate to choose this [TextInputAction] when running on iOS.
21+ none,
22+
23+ /// Logical meaning: Let the OS decide which action is most appropriate.
24+ ///
25+ /// Android: Corresponds to Android's "IME_ACTION_UNSPECIFIED". The OS chooses
26+ /// which keyboard action to display. The decision will likely be a done
27+ /// button or a return key.
28+ ///
29+ /// iOS: Corresponds to iOS's "UIReturnKeyDefault". The title displayed in
30+ /// the action button is "return".
31+ unspecified,
32+
33+ /// Logical meaning: The user is done providing input to a group of inputs
34+ /// (like a form). Some kind of finalization behavior should now take place.
35+ ///
36+ /// Android: Corresponds to Android's "IME_ACTION_DONE". The OS displays a
37+ /// button that represents completion, e.g., a checkmark button.
38+ ///
39+ /// iOS: Corresponds to iOS's "UIReturnKeyDone". The title displayed in the
40+ /// action button is "Done".
41+ done,
42+
43+ /// Logical meaning: The user has entered some text that represents a
44+ /// destination, e.g., a restaurant name. The "go" button is intended to take
45+ /// the user to a part of the app that corresponds to this destination.
46+ ///
47+ /// Android: Corresponds to Android's "IME_ACTION_GO". The OS displays a
48+ /// button that represents taking "the user to the target of the text they
49+ /// typed", e.g., a right-facing arrow button.
50+ ///
51+ /// iOS: Corresponds to iOS's "UIReturnKeyGo". The title displayed in the
52+ /// action button is "Go".
53+ go,
54+
55+ /// Logical meaning: Execute a search query.
56+ ///
57+ /// Android: Corresponds to Android's "IME_ACTION_SEARCH". The OS displays a
58+ /// button that represents a search, e.g., a magnifying glass button.
59+ ///
60+ /// iOS: Corresponds to iOS's "UIReturnKeySearch". The title displayed in the
61+ /// action button is "Search".
62+ search,
63+
64+ /// Logical meaning: Sends something that the user has composed, e.g., an
65+ /// email or a text message.
66+ ///
67+ /// Android: Corresponds to Android's "IME_ACTION_SEND". The OS displays a
68+ /// button that represents sending something, e.g., a paper plane button.
69+ ///
70+ /// iOS: Corresponds to iOS's "UIReturnKeySend". The title displayed in the
71+ /// action button is "Send".
72+ send,
73+
74+ /// Logical meaning: The user is done with the current input source and wants
75+ /// to move to the next one.
76+ ///
77+ /// Moves the focus to the next focusable item in the same [FocusScope] .
78+ ///
79+ /// Android: Corresponds to Android's "IME_ACTION_NEXT". The OS displays a
80+ /// button that represents moving forward, e.g., a right-facing arrow button.
81+ ///
82+ /// iOS: Corresponds to iOS's "UIReturnKeyNext". The title displayed in the
83+ /// action button is "Next".
84+ next,
85+
86+ /// Logical meaning: The user wishes to return to the previous input source
87+ /// in the group, e.g., a form with multiple [TextField] s.
88+ ///
89+ /// Moves the focus to the previous focusable item in the same [FocusScope] .
90+ ///
91+ /// Android: Corresponds to Android's "IME_ACTION_PREVIOUS". The OS displays a
92+ /// button that represents moving backward, e.g., a left-facing arrow button.
93+ ///
94+ /// iOS: iOS does not have a keyboard return type of "previous." It is
95+ /// inappropriate to choose this [TextInputAction] when running on iOS.
96+ previous,
97+
98+ /// Logical meaning: In iOS apps, it is common for a "Back" button and
99+ /// "Continue" button to appear at the top of the screen. However, when the
100+ /// keyboard is open, these buttons are often hidden off-screen. Therefore,
101+ /// the purpose of the "Continue" return key on iOS is to make the "Continue"
102+ /// button available when the user is entering text.
103+ ///
104+ /// Historical context aside, [TextInputAction.continueAction] can be used any
105+ /// time that the term "Continue" seems most appropriate for the given action.
106+ ///
107+ /// Android: Android does not have an IME input type of "continue." It is
108+ /// inappropriate to choose this [TextInputAction] when running on Android.
109+ ///
110+ /// iOS: Corresponds to iOS's "UIReturnKeyContinue". The title displayed in the
111+ /// action button is "Continue". This action is only available on iOS 9.0+.
112+ ///
113+ /// The reason that this value has "Action" post-fixed to it is because
114+ /// "continue" is a reserved word in Dart, as well as many other languages.
115+ continueAction,
116+
117+ /// Logical meaning: The user wants to join something, e.g., a wireless
118+ /// network.
119+ ///
120+ /// Android: Android does not have an IME input type of "join." It is
121+ /// inappropriate to choose this [TextInputAction] when running on Android.
122+ ///
123+ /// iOS: Corresponds to iOS's "UIReturnKeyJoin". The title displayed in the
124+ /// action button is "Join".
125+ join,
126+
127+ /// Logical meaning: The user wants routing options, e.g., driving directions.
128+ ///
129+ /// Android: Android does not have an IME input type of "route." It is
130+ /// inappropriate to choose this [TextInputAction] when running on Android.
131+ ///
132+ /// iOS: Corresponds to iOS's "UIReturnKeyRoute". The title displayed in the
133+ /// action button is "Route".
134+ route,
135+
136+ /// Logical meaning: Initiate a call to emergency services.
137+ ///
138+ /// Android: Android does not have an IME input type of "emergencyCall." It is
139+ /// inappropriate to choose this [TextInputAction] when running on Android.
140+ ///
141+ /// iOS: Corresponds to iOS's "UIReturnKeyEmergencyCall". The title displayed
142+ /// in the action button is "Emergency Call".
143+ emergencyCall,
144+
145+ /// Logical meaning: Insert a newline character in the focused text input,
146+ /// e.g., [TextField] .
147+ ///
148+ /// Android: Corresponds to Android's "IME_ACTION_NONE". The OS displays a
149+ /// button that represents a new line, e.g., a carriage return button.
150+ ///
151+ /// iOS: Corresponds to iOS's "UIReturnKeyDefault". The title displayed in the
152+ /// action button is "return".
153+ ///
154+ /// The term [TextInputAction.newline] exists in Flutter but not in Android
155+ /// or iOS. The reason for introducing this term is so that developers can
156+ /// achieve the common result of inserting new lines without needing to
157+ /// understand the various IME actions on Android and return keys on iOS.
158+ /// Thus, [TextInputAction.newline] is a convenience term that alleviates the
159+ /// need to understand the underlying platforms to achieve this common behavior.
160+ newline;
161+
162+ /// Displayable string representation of the enum value.
163+ String get prettify {
164+ return switch (this ) {
165+ TextInputActionC .none => 'None' ,
166+ TextInputActionC .unspecified => 'Unspecified' ,
167+ TextInputActionC .done => 'Done' ,
168+ TextInputActionC .go => 'Go' ,
169+ TextInputActionC .search => 'Search' ,
170+ TextInputActionC .send => 'Send' ,
171+ TextInputActionC .next => 'Next' ,
172+ TextInputActionC .previous => 'Previous' ,
173+ TextInputActionC .continueAction => 'Continue' ,
174+ TextInputActionC .join => 'Join' ,
175+ TextInputActionC .route => 'Route' ,
176+ TextInputActionC .emergencyCall => 'Emergency Call' ,
177+ TextInputActionC .newline => 'New-line' ,
178+ };
179+ }
180+ }
181+
10182/// Used to configure the auto validation of [FormField] and [Form] widgets.
11183enum AutovalidateModeC {
12184 /// No auto validation will occur.
0 commit comments