| Flutter iOS Embedder |

Classes | Functions | Variables
FlutterTextInputPlugin.mm File Reference
`#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.h"`
`#import "flutter/shell/platform/darwin/ios/framework/Source/UIViewController+FlutterScreenAndSceneIfLoaded.h"`
`#import <Foundation/Foundation.h>`
`#import <UIKit/UIKit.h>`
`#include "unicode/uchar.h"`
`#include "flutter/fml/logging.h"`
`#include "flutter/fml/platform/darwin/string_range_sanitization.h"`

Go to the source code of this file.

## Classes
class | FlutterSecureTextInputView
class | FlutterTextInputViewAccessibilityHider
class | FlutterTimerProxy

## Functions
static BOOL | IsEmoji (NSString *text, NSRange charRange)
static BOOL | ShouldShowSystemKeyboard (NSDictionary *type)
static UIKeyboardType | ToUIKeyboardType (NSDictionary *type)
static UITextAutocapitalizationType | ToUITextAutoCapitalizationType (NSDictionary *type)
static UIReturnKeyType | ToUIReturnKeyType (NSString *inputType)
static UITextContentType | ToUITextContentType (NSArray< NSString * > *hints)
static NSString * | AutofillIdFromDictionary (NSDictionary *dictionary)
typedef | NS_ENUM (NSInteger, FlutterAutofillType)
static BOOL | IsFieldPasswordRelated (NSDictionary *configuration)
static FlutterAutofillType | AutofillTypeOf (NSDictionary *configuration)
static BOOL | IsApproximatelyEqual (float x, float y, float delta)
static BOOL | IsSelectionRectBoundaryCloserToPoint (CGPoint point, CGRect selectionRect, BOOL selectionRectIsRTL, BOOL useTrailingBoundaryOfSelectionRect, CGRect otherSelectionRect, BOOL otherSelectionRectIsRTL, CGFloat verticalPrecision)

## Variables
static const FLUTTER_ASSERT_ARC char | kTextAffinityDownstream [] = "TextAffinity.downstream"
static const char | kTextAffinityUpstream [] = "TextAffinity.upstream"
static constexpr double | kUITextInputAccessibilityEnablingDelaySeconds = 0.5
static const NSTimeInterval | kKeyboardAnimationDelaySeconds = 0.1
static const NSTimeInterval | kKeyboardAnimationTimeToCompleteion = 0.3
const CGRect | kInvalidFirstRect = {{-1, -1}, {9999, 9999}}
static NSString *const | kShowMethod = @"@"TextInput.show"
static NSString *const | kHideMethod = @"@"TextInput.hide"
static NSString *const | kSetClientMethod = @"@"TextInput.setClient"
static NSString *const | kSetPlatformViewClientMethod = @"@"TextInput.setPlatformViewClient"
static NSString *const | kSetEditingStateMethod = @"@"TextInput.setEditingState"
static NSString *const | kClearClientMethod = @"@"TextInput.clearClient"
static NSString *const | kSetEditableSizeAndTransformMethod
static NSString *const | kSetMarkedTextRectMethod = @"@"TextInput.setMarkedTextRect"
static NSString *const | kFinishAutofillContextMethod = @"@"TextInput.finishAutofillContext"
static NSString *const | kDeprecatedSetSelectionRectsMethod = @"@"TextInput.setSelectionRects"
static NSString *const | kSetSelectionRectsMethod = @"@"Scribble.setSelectionRects"
static NSString *const | kStartLiveTextInputMethod = @"@"TextInput.startLiveTextInput"
static NSString *const | kUpdateConfigMethod = @"@"TextInput.updateConfig"
static NSString *const | kOnInteractiveKeyboardPointerMoveMethod
static NSString *const | kOnInteractiveKeyboardPointerUpMethod
static NSString *const | kSecureTextEntry = @"@"obscureText"
static NSString *const | kKeyboardType = @"@"inputType"
static NSString *const | kKeyboardAppearance = @"@"keyboardAppearance"
static NSString *const | kInputAction = @"@"inputAction"
static NSString *const | kEnableDeltaModel = @"@"enableDeltaModel"
static NSString *const | kEnableInteractiveSelection = @"@"enableInteractiveSelection"
static NSString *const | kSmartDashesType = @"@"smartDashesType"
static NSString *const | kSmartQuotesType = @"@"smartQuotesType"
static NSString *const | kAssociatedAutofillFields = @"@"fields"
static NSString *const | kAutofillProperties = @"@"autofill"
static NSString *const | kAutofillId = @"@"uniqueIdentifier"
static NSString *const | kAutofillEditingValue = @"@"editingValue"
static NSString *const | kAutofillHints = @"@"hints"
static NSString *const | kAutocorrectionType = @"@"autocorrect"
const char * | _selectionAffinity
FlutterTextRange * | _selectedTextRange
UIInputViewController * | _inputViewController
CGRect | _cachedFirstRect
FlutterScribbleInteractionStatus | _scribbleInteractionStatus
BOOL | _hasPlaceholder
bool | _isSystemKeyboardEnabled
bool | _isFloatingCursorActive
CGPoint | _floatingCursorOffset
bool | _enableInteractiveSelection

## Function Documentation

## ◆ AutofillIdFromDictionary()

static NSString* AutofillIdFromDictionary | ( | NSDictionary * | dictionary | ) |
| static

Definition at line 329 of file FlutterTextInputPlugin.mm.

329 {
330 NSDictionary* autofill = dictionary[kAutofillProperties];
331 if (autofill) {
332 return autofill[kAutofillId];
333 }
334
335 // When autofill is nil, the field may still need an autofill id
336 // if the field is for password.
337 return [dictionary[kSecureTextEntry] boolValue] ? @"password" : nil;
338 }

References kAutofillId, kAutofillProperties, and kSecureTextEntry.

Referenced by IsFieldPasswordRelated().

## ◆ AutofillTypeOf()

static FlutterAutofillType AutofillTypeOf | ( | NSDictionary * | configuration | ) |
| static

Definition at line 424 of file FlutterTextInputPlugin.mm.

424 {
425 for (NSDictionary* field in configuration[kAssociatedAutofillFields]) {
426 if (IsFieldPasswordRelated(field)) {
427 return kFlutterAutofillTypePassword;
428 }
429 }
430
431 if (IsFieldPasswordRelated(configuration)) {
432 return kFlutterAutofillTypePassword;
433 }
434
435 NSDictionary* autofill = configuration[kAutofillProperties];
436 UITextContentType contentType = ToUITextContentType(autofill[kAutofillHints]);
437 return !autofill || [contentType isEqualToString:@""] ? kFlutterAutofillTypeNone
438 : kFlutterAutofillTypeRegular;
439 }

References IsFieldPasswordRelated(), kAssociatedAutofillFields, kAutofillHints, kAutofillProperties, and ToUITextContentType().

## ◆ IsApproximatelyEqual()

static BOOL IsApproximatelyEqual | ( | float | x,
|  | float | y,
|  | float | delta
| ) |  |
| static

Definition at line 441 of file FlutterTextInputPlugin.mm.

441 {
442 return fabsf(x - y) <= delta;
443 }

Referenced by IsSelectionRectBoundaryCloserToPoint().

## ◆ IsEmoji()

static BOOL IsEmoji | ( | NSString * | text,
|  | NSRange | charRange
| ) |  |
| static

Definition at line 85 of file FlutterTextInputPlugin.mm.

85 {
86 UChar32 codePoint;
87 BOOL gotCodePoint = [text getBytes:&codePoint
88 maxLength:sizeof(codePoint)
89 usedLength:NULL
90 encoding:NSUTF32StringEncoding
91 options:kNilOptions
92 range:charRange
93 remainingRange:NULL];
94 return gotCodePoint && u_hasBinaryProperty(codePoint, UCHAR_EMOJI);
95 }

## ◆ IsFieldPasswordRelated()

static BOOL IsFieldPasswordRelated | ( | NSDictionary * | configuration | ) |
| static

Definition at line 398 of file FlutterTextInputPlugin.mm.

398 {
399 // Autofill is explicitly disabled if the id isn't present.
400 if (!AutofillIdFromDictionary(configuration)) {
401 return NO;
402 }
403
404 BOOL isSecureTextEntry = [configuration[kSecureTextEntry] boolValue];
405 if (isSecureTextEntry) {
406 return YES;
407 }
408
409 NSDictionary* autofill = configuration[kAutofillProperties];
410 UITextContentType contentType = ToUITextContentType(autofill[kAutofillHints]);
411
412 if ([contentType isEqualToString:UITextContentTypePassword] ||
413 [contentType isEqualToString:UITextContentTypeUsername]) {
414 return YES;
415 }
416
417 if ([contentType isEqualToString:UITextContentTypeNewPassword]) {
418 return YES;
419 }
420
421 return NO;
422 }

References AutofillIdFromDictionary(), kAutofillHints, kAutofillProperties, kSecureTextEntry, and ToUITextContentType().

Referenced by AutofillTypeOf().

## ◆ IsSelectionRectBoundaryCloserToPoint()

static BOOL IsSelectionRectBoundaryCloserToPoint | ( | CGPoint | point,
|  | CGRect | selectionRect,
|  | BOOL | selectionRectIsRTL,
|  | BOOL | useTrailingBoundaryOfSelectionRect,
|  | CGRect | otherSelectionRect,
|  | BOOL | otherSelectionRectIsRTL,
|  | CGFloat | verticalPrecision
| ) |  |
| static

Definition at line 467 of file FlutterTextInputPlugin.mm.

473 {
474 // The point is inside the selectionRect's corresponding half-rect area.
475 if (CGRectContainsPoint(
476 CGRectMake(
477 selectionRect.origin.x + ((useTrailingBoundaryOfSelectionRect ^ selectionRectIsRTL)
478 ? 0.5 * selectionRect.size.width
479 : 0),
480 selectionRect.origin.y, 0.5 * selectionRect.size.width, selectionRect.size.height),
481 point)) {
482 return YES;
483 }
484 // pointForSelectionRect is either leading-center or trailing-center point of selectionRect.
485 CGPoint pointForSelectionRect = CGPointMake(
486 selectionRect.origin.x +
487 (selectionRectIsRTL ^ useTrailingBoundaryOfSelectionRect ? selectionRect.size.width : 0),
488 selectionRect.origin.y + selectionRect.size.height * 0.5);
489 float yDist = fabs(pointForSelectionRect.y - point.y);
490 float xDist = fabs(pointForSelectionRect.x - point.x);
491
492 // pointForOtherSelectionRect is the leading-center point of otherSelectionRect.
493 CGPoint pointForOtherSelectionRect = CGPointMake(
494 otherSelectionRect.origin.x + (otherSelectionRectIsRTL ? otherSelectionRect.size.width : 0),
495 otherSelectionRect.origin.y + otherSelectionRect.size.height * 0.5);
496 float yDistOther = fabs(pointForOtherSelectionRect.y - point.y);
497 float xDistOther = fabs(pointForOtherSelectionRect.x - point.x);
498
499 // This serves a similar purpose to IsApproximatelyEqual, allowing a little buffer before
500 // declaring something closer vertically to account for the small variations in size and position
501 // of SelectionRects, especially when dealing with emoji.
502 BOOL isCloserVertically = yDist < yDistOther - verticalPrecision;
503 BOOL isEqualVertically = IsApproximatelyEqual(yDist, yDistOther, verticalPrecision);
504 BOOL isAboveBottomOfLine = point.y <= selectionRect.origin.y + selectionRect.size.height;
505 BOOL isCloserHorizontally = xDist < xDistOther;
506 BOOL isBelowBottomOfLine = point.y > selectionRect.origin.y + selectionRect.size.height;
507 // Is "farther away", or is closer to the end of the text line.
508 BOOL isFarther;
509 if (selectionRectIsRTL) {
510 isFarther = selectionRect.origin.x < otherSelectionRect.origin.x;
511 } else {
512 isFarther = selectionRect.origin.x +
513 (useTrailingBoundaryOfSelectionRect ? selectionRect.size.width : 0) >
514 otherSelectionRect.origin.x;
515 }
516 return (isCloserVertically ||
517 (isEqualVertically &&
518 ((isAboveBottomOfLine && isCloserHorizontally) || (isBelowBottomOfLine && isFarther))));
519 }

References IsApproximatelyEqual().

## ◆ NS_ENUM()

typedef NS_ENUM | ( | NSInteger | ,
|  | FlutterAutofillType |
| ) |  |

Definition at line 389 of file FlutterTextInputPlugin.mm.

389 {
390 // The field does not have autofillable content. Additionally if
391 // the field is currently in the autofill context, it will be
392 // removed from the context without triggering autofill save.
393 kFlutterAutofillTypeNone,
394 kFlutterAutofillTypeRegular,
395 kFlutterAutofillTypePassword,
396 };

## ◆ ShouldShowSystemKeyboard()

static BOOL ShouldShowSystemKeyboard | ( | NSDictionary * | type | ) |
| static

Definition at line 101 of file FlutterTextInputPlugin.mm.

101 {
102 NSString* inputType = type[@"name"];
103 return ![inputType isEqualToString:@"TextInputType.none"];
104 }

## ◆ ToUIKeyboardType()

static UIKeyboardType ToUIKeyboardType | ( | NSDictionary * | type | ) |
| static

Definition at line 105 of file FlutterTextInputPlugin.mm.

105 {
106 NSString* inputType = type[@"name"];
107 if ([inputType isEqualToString:@"TextInputType.address"]) {
108 return UIKeyboardTypeDefault;
109 }
110 if ([inputType isEqualToString:@"TextInputType.datetime"]) {
111 return UIKeyboardTypeNumbersAndPunctuation;
112 }
113 if ([inputType isEqualToString:@"TextInputType.emailAddress"]) {
114 return UIKeyboardTypeEmailAddress;
115 }
116 if ([inputType isEqualToString:@"TextInputType.multiline"]) {
117 return UIKeyboardTypeDefault;
118 }
119 if ([inputType isEqualToString:@"TextInputType.name"]) {
120 return UIKeyboardTypeNamePhonePad;
121 }
122 if ([inputType isEqualToString:@"TextInputType.number"]) {
123 if ([type[@"signed"] boolValue]) {
124 return UIKeyboardTypeNumbersAndPunctuation;
125 }
126 if ([type[@"decimal"] boolValue]) {
127 return UIKeyboardTypeDecimalPad;
128 }
129 return UIKeyboardTypeNumberPad;
130 }
131 if ([inputType isEqualToString:@"TextInputType.phone"]) {
132 return UIKeyboardTypePhonePad;
133 }
134 if ([inputType isEqualToString:@"TextInputType.text"]) {
135 return UIKeyboardTypeDefault;
136 }
137 if ([inputType isEqualToString:@"TextInputType.url"]) {
138 return UIKeyboardTypeURL;
139 }
140 if ([inputType isEqualToString:@"TextInputType.visiblePassword"]) {
141 return UIKeyboardTypeASCIICapable;
142 }
143 if ([inputType isEqualToString:@"TextInputType.webSearch"]) {
144 return UIKeyboardTypeWebSearch;
145 }
146 if ([inputType isEqualToString:@"TextInputType.twitter"]) {
147 return UIKeyboardTypeTwitter;
148 }
149 return UIKeyboardTypeDefault;
150 }

## ◆ ToUIReturnKeyType()

static UIReturnKeyType ToUIReturnKeyType | ( | NSString * | inputType | ) |
| static

Definition at line 164 of file FlutterTextInputPlugin.mm.

164 {
165 // Where did the term "unspecified" come from? iOS has a "default" and Android
166 // has "unspecified." These 2 terms seem to mean the same thing but we need
167 // to pick just one. "unspecified" was chosen because "default" is often a
168 // reserved word in languages with switch statements (dart, java, etc).
169 if ([inputType isEqualToString:@"TextInputAction.unspecified"]) {
170 return UIReturnKeyDefault;
171 }
172
173 if ([inputType isEqualToString:@"TextInputAction.done"]) {
174 return UIReturnKeyDone;
175 }
176
177 if ([inputType isEqualToString:@"TextInputAction.go"]) {
178 return UIReturnKeyGo;
179 }
180
181 if ([inputType isEqualToString:@"TextInputAction.send"]) {
182 return UIReturnKeySend;
183 }
184
185 if ([inputType isEqualToString:@"TextInputAction.search"]) {
186 return UIReturnKeySearch;
187 }
188
189 if ([inputType isEqualToString:@"TextInputAction.next"]) {
190 return UIReturnKeyNext;
191 }
192
193 if ([inputType isEqualToString:@"TextInputAction.continueAction"]) {
194 return UIReturnKeyContinue;
195 }
196
197 if ([inputType isEqualToString:@"TextInputAction.join"]) {
198 return UIReturnKeyJoin;
199 }
200
201 if ([inputType isEqualToString:@"TextInputAction.route"]) {
202 return UIReturnKeyRoute;
203 }
204
205 if ([inputType isEqualToString:@"TextInputAction.emergencyCall"]) {
206 return UIReturnKeyEmergencyCall;
207 }
208
209 if ([inputType isEqualToString:@"TextInputAction.newline"]) {
210 return UIReturnKeyDefault;
211 }
212
213 // Present default key if bad input type is given.
214 return UIReturnKeyDefault;
215 }

## ◆ ToUITextAutoCapitalizationType()

static UITextAutocapitalizationType ToUITextAutoCapitalizationType | ( | NSDictionary * | type | ) |
| static

Definition at line 152 of file FlutterTextInputPlugin.mm.

152 {
153 NSString* textCapitalization = type[@"textCapitalization"];
154 if ([textCapitalization isEqualToString:@"TextCapitalization.characters"]) {
155 return UITextAutocapitalizationTypeAllCharacters;
156 } else if ([textCapitalization isEqualToString:@"TextCapitalization.sentences"]) {
157 return UITextAutocapitalizationTypeSentences;
158 } else if ([textCapitalization isEqualToString:@"TextCapitalization.words"]) {
159 return UITextAutocapitalizationTypeWords;
160 }
161 return UITextAutocapitalizationTypeNone;
162 }

## ◆ ToUITextContentType()

static UITextContentType ToUITextContentType | ( | NSArray< NSString * > * | hints | ) |
| static

Definition at line 217 of file FlutterTextInputPlugin.mm.

217 {
218 if (!hints || hints.count == 0) {
219 // If no hints are specified, use the default content type nil.
220 return nil;
221 }
222
223 NSString* hint = hints[0];
224 if ([hint isEqualToString:@"addressCityAndState"]) {
225 return UITextContentTypeAddressCityAndState;
226 }
227
228 if ([hint isEqualToString:@"addressState"]) {
229 return UITextContentTypeAddressState;
230 }
231
232 if ([hint isEqualToString:@"addressCity"]) {
233 return UITextContentTypeAddressCity;
234 }
235
236 if ([hint isEqualToString:@"sublocality"]) {
237 return UITextContentTypeSublocality;
238 }
239
240 if ([hint isEqualToString:@"streetAddressLine1"]) {
241 return UITextContentTypeStreetAddressLine1;
242 }
243
244 if ([hint isEqualToString:@"streetAddressLine2"]) {
245 return UITextContentTypeStreetAddressLine2;
246 }
247
248 if ([hint isEqualToString:@"countryName"]) {
249 return UITextContentTypeCountryName;
250 }
251
252 if ([hint isEqualToString:@"fullStreetAddress"]) {
253 return UITextContentTypeFullStreetAddress;
254 }
255
256 if ([hint isEqualToString:@"postalCode"]) {
257 return UITextContentTypePostalCode;
258 }
259
260 if ([hint isEqualToString:@"location"]) {
261 return UITextContentTypeLocation;
262 }
263
264 if ([hint isEqualToString:@"creditCardNumber"]) {
265 return UITextContentTypeCreditCardNumber;
266 }
267
268 if ([hint isEqualToString:@"email"]) {
269 return UITextContentTypeEmailAddress;
270 }
271
272 if ([hint isEqualToString:@"jobTitle"]) {
273 return UITextContentTypeJobTitle;
274 }
275
276 if ([hint isEqualToString:@"givenName"]) {
277 return UITextContentTypeGivenName;
278 }
279
280 if ([hint isEqualToString:@"middleName"]) {
281 return UITextContentTypeMiddleName;
282 }
283
284 if ([hint isEqualToString:@"familyName"]) {
285 return UITextContentTypeFamilyName;
286 }
287
288 if ([hint isEqualToString:@"name"]) {
289 return UITextContentTypeName;
290 }
291
292 if ([hint isEqualToString:@"namePrefix"]) {
293 return UITextContentTypeNamePrefix;
294 }
295
296 if ([hint isEqualToString:@"nameSuffix"]) {
297 return UITextContentTypeNameSuffix;
298 }
299
300 if ([hint isEqualToString:@"nickname"]) {
301 return UITextContentTypeNickname;
302 }
303
304 if ([hint isEqualToString:@"organizationName"]) {
305 return UITextContentTypeOrganizationName;
306 }
307
308 if ([hint isEqualToString:@"telephoneNumber"]) {
309 return UITextContentTypeTelephoneNumber;
310 }
311
312 if ([hint isEqualToString:@"password"]) {
313 return UITextContentTypePassword;
314 }
315
316 if ([hint isEqualToString:@"oneTimeCode"]) {
317 return UITextContentTypeOneTimeCode;
318 }
319
320 if ([hint isEqualToString:@"newPassword"]) {
321 return UITextContentTypeNewPassword;
322 }
323
324 return hints[0];
325 }

Referenced by AutofillTypeOf(), and IsFieldPasswordRelated().

## Variable Documentation

## ◆ _cachedFirstRect

CGRect _cachedFirstRect

Definition at line 814 of file FlutterTextInputPlugin.mm.

## ◆ _enableInteractiveSelection

bool _enableInteractiveSelection

Definition at line 823 of file FlutterTextInputPlugin.mm.

## ◆ _floatingCursorOffset

CGPoint _floatingCursorOffset

Definition at line 822 of file FlutterTextInputPlugin.mm.

## ◆ _hasPlaceholder

BOOL _hasPlaceholder

Definition at line 816 of file FlutterTextInputPlugin.mm.

## ◆ _inputViewController

UIInputViewController* _inputViewController

Definition at line 813 of file FlutterTextInputPlugin.mm.

## ◆ _isFloatingCursorActive

bool _isFloatingCursorActive

Definition at line 821 of file FlutterTextInputPlugin.mm.

## ◆ _isSystemKeyboardEnabled

bool _isSystemKeyboardEnabled

Definition at line 820 of file FlutterTextInputPlugin.mm.

## ◆ _scribbleInteractionStatus

FlutterScribbleInteractionStatus _scribbleInteractionStatus

Definition at line 815 of file FlutterTextInputPlugin.mm.

## ◆ _selectedTextRange

FlutterTextRange* _selectedTextRange

Definition at line 812 of file FlutterTextInputPlugin.mm.

## ◆ _selectionAffinity

const char* _selectionAffinity

Initial value:
{
int _textInputClient

Definition at line 809 of file FlutterTextInputPlugin.mm.

## ◆ kAssociatedAutofillFields

NSString* const kAssociatedAutofillFields = @"@"fields"
| static

Definition at line 72 of file FlutterTextInputPlugin.mm.

Referenced by AutofillTypeOf().

## ◆ kAutocorrectionType

NSString* const kAutocorrectionType = @"@"autocorrect"
| static

Definition at line 80 of file FlutterTextInputPlugin.mm.

## ◆ kAutofillEditingValue

NSString* const kAutofillEditingValue = @"@"editingValue"
| static

Definition at line 77 of file FlutterTextInputPlugin.mm.

## ◆ kAutofillHints

NSString* const kAutofillHints = @"@"hints"
| static

Definition at line 78 of file FlutterTextInputPlugin.mm.

Referenced by AutofillTypeOf(), and IsFieldPasswordRelated().

## ◆ kAutofillId

NSString* const kAutofillId = @"@"uniqueIdentifier"
| static

Definition at line 76 of file FlutterTextInputPlugin.mm.

Referenced by AutofillIdFromDictionary().

## ◆ kAutofillProperties

NSString* const kAutofillProperties = @"@"autofill"
| static

Definition at line 75 of file FlutterTextInputPlugin.mm.

Referenced by AutofillIdFromDictionary(), AutofillTypeOf(), and IsFieldPasswordRelated().

## ◆ kClearClientMethod

NSString* const kClearClientMethod = @"@"TextInput.clearClient"
| static

Definition at line 44 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kDeprecatedSetSelectionRectsMethod

NSString* const kDeprecatedSetSelectionRectsMethod = @"@"TextInput.setSelectionRects"
| static

Definition at line 52 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kEnableDeltaModel

NSString* const kEnableDeltaModel = @"@"enableDeltaModel"
| static

Definition at line 66 of file FlutterTextInputPlugin.mm.

## ◆ kEnableInteractiveSelection

NSString* const kEnableInteractiveSelection = @"@"enableInteractiveSelection"
| static

Definition at line 67 of file FlutterTextInputPlugin.mm.

## ◆ kFinishAutofillContextMethod

NSString* const kFinishAutofillContextMethod = @"@"TextInput.finishAutofillContext"
| static

Definition at line 48 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kHideMethod

NSString* const kHideMethod = @"@"TextInput.hide"
| static

Definition at line 40 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kInputAction

NSString* const kInputAction = @"@"inputAction"
| static

Definition at line 65 of file FlutterTextInputPlugin.mm.

## ◆ kInvalidFirstRect

const CGRect kInvalidFirstRect = {{-1, -1}, {9999, 9999}}

Definition at line 35 of file FlutterTextInputPlugin.mm.

## ◆ kKeyboardAnimationDelaySeconds

const NSTimeInterval kKeyboardAnimationDelaySeconds = 0.1
| static

Definition at line 26 of file FlutterTextInputPlugin.mm.

## ◆ kKeyboardAnimationTimeToCompleteion

const NSTimeInterval kKeyboardAnimationTimeToCompleteion = 0.3
| static

Definition at line 29 of file FlutterTextInputPlugin.mm.

## ◆ kKeyboardAppearance

NSString* const kKeyboardAppearance = @"@"keyboardAppearance"
| static

Definition at line 64 of file FlutterTextInputPlugin.mm.

## ◆ kKeyboardType

NSString* const kKeyboardType = @"@"inputType"
| static

Definition at line 63 of file FlutterTextInputPlugin.mm.

## ◆ kOnInteractiveKeyboardPointerMoveMethod

NSString* const kOnInteractiveKeyboardPointerMoveMethod
| static

Initial value:
=
@"@"TextInput.onPointerMoveForInteractiveKeyboard"

Definition at line 56 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kOnInteractiveKeyboardPointerUpMethod

NSString* const kOnInteractiveKeyboardPointerUpMethod
| static

Initial value:
=
@"@"TextInput.onPointerUpForInteractiveKeyboard"

Definition at line 58 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kSecureTextEntry

NSString* const kSecureTextEntry = @"@"obscureText"
| static

Definition at line 62 of file FlutterTextInputPlugin.mm.

Referenced by AutofillIdFromDictionary(), and IsFieldPasswordRelated().

## ◆ kSetClientMethod

NSString* const kSetClientMethod = @"@"TextInput.setClient"
| static

Definition at line 41 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kSetEditableSizeAndTransformMethod

NSString* const kSetEditableSizeAndTransformMethod
| static

Initial value:
=
@"@"TextInput.setEditableSizeAndTransform"

Definition at line 45 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kSetEditingStateMethod

NSString* const kSetEditingStateMethod = @"@"TextInput.setEditingState"
| static

Definition at line 43 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kSetMarkedTextRectMethod

NSString* const kSetMarkedTextRectMethod = @"@"TextInput.setMarkedTextRect"
| static

Definition at line 47 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kSetPlatformViewClientMethod

NSString* const kSetPlatformViewClientMethod = @"@"TextInput.setPlatformViewClient"
| static

Definition at line 42 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kSetSelectionRectsMethod

NSString* const kSetSelectionRectsMethod = @"@"Scribble.setSelectionRects"
| static

Definition at line 53 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kShowMethod

NSString* const kShowMethod = @"@"TextInput.show"
| static

Definition at line 39 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kSmartDashesType

NSString* const kSmartDashesType = @"@"smartDashesType"
| static

Definition at line 69 of file FlutterTextInputPlugin.mm.

## ◆ kSmartQuotesType

NSString* const kSmartQuotesType = @"@"smartQuotesType"
| static

Definition at line 70 of file FlutterTextInputPlugin.mm.

## ◆ kStartLiveTextInputMethod

NSString* const kStartLiveTextInputMethod = @"@"TextInput.startLiveTextInput"
| static

Definition at line 54 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

## ◆ kTextAffinityDownstream

const FLUTTER_ASSERT_ARC char kTextAffinityDownstream[] = "TextAffinity.downstream"
| static

Definition at line 18 of file FlutterTextInputPlugin.mm.

## ◆ kTextAffinityUpstream

const char kTextAffinityUpstream[] = "TextAffinity.upstream"
| static

Definition at line 19 of file FlutterTextInputPlugin.mm.

## ◆ kUITextInputAccessibilityEnablingDelaySeconds

constexpr double kUITextInputAccessibilityEnablingDelaySeconds = 0.5
| static constexpr

Definition at line 22 of file FlutterTextInputPlugin.mm.

## ◆ kUpdateConfigMethod

NSString* const kUpdateConfigMethod = @"@"TextInput.updateConfig"
| static

Definition at line 55 of file FlutterTextInputPlugin.mm.

Referenced by FlutterTextInputPlugin::handleMethodCall:result:.

ToUITextContentType
static UITextContentType ToUITextContentType(NSArray< NSString * > *hints)
Definition: FlutterTextInputPlugin.mm:217
IsFieldPasswordRelated
static BOOL IsFieldPasswordRelated(NSDictionary *configuration)
Definition: FlutterTextInputPlugin.mm:398
kAutofillProperties
static NSString *const kAutofillProperties
Definition: FlutterTextInputPlugin.mm:75
kAutofillId
static NSString *const kAutofillId
Definition: FlutterTextInputPlugin.mm:76
kSecureTextEntry
static NSString *const kSecureTextEntry
Definition: FlutterTextInputPlugin.mm:62
kAssociatedAutofillFields
static NSString *const kAssociatedAutofillFields
Definition: FlutterTextInputPlugin.mm:72
AutofillIdFromDictionary
static NSString * AutofillIdFromDictionary(NSDictionary *dictionary)
Definition: FlutterTextInputPlugin.mm:329
kAutofillHints
static NSString *const kAutofillHints
Definition: FlutterTextInputPlugin.mm:78
IsApproximatelyEqual
static BOOL IsApproximatelyEqual(float x, float y, float delta)
Definition: FlutterTextInputPlugin.mm:441