Flutter Engine
The Flutter Engine
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 FLUTTER_ASSERT_ARC const 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 323 of file FlutterTextInputPlugin.mm.

323 {
324 NSDictionary* autofill = dictionary[kAutofillProperties];
325 if (autofill) {
326 return autofill[kAutofillId];
327 }
328
329 // When autofill is nil, the field may still need an autofill id
330 // if the field is for password.
331 return [dictionary[kSecureTextEntry] boolValue] ? @"password" : nil;
332}
static NSString *const kSecureTextEntry
static NSString *const kAutofillId
static NSString *const kAutofillProperties

◆ AutofillTypeOf()

static FlutterAutofillType AutofillTypeOf ( NSDictionary *  configuration)
static

Definition at line 418 of file FlutterTextInputPlugin.mm.

418 {
419 for (NSDictionary* field in configuration[kAssociatedAutofillFields]) {
420 if (IsFieldPasswordRelated(field)) {
421 return kFlutterAutofillTypePassword;
422 }
423 }
424
425 if (IsFieldPasswordRelated(configuration)) {
426 return kFlutterAutofillTypePassword;
427 }
428
429 NSDictionary* autofill = configuration[kAutofillProperties];
430 UITextContentType contentType = ToUITextContentType(autofill[kAutofillHints]);
431 return !autofill || [contentType isEqualToString:@""] ? kFlutterAutofillTypeNone
432 : kFlutterAutofillTypeRegular;
433}
static NSString *const kAutofillHints
static NSString *const kAssociatedAutofillFields
static BOOL IsFieldPasswordRelated(NSDictionary *configuration)
static UITextContentType ToUITextContentType(NSArray< NSString * > *hints)

◆ IsApproximatelyEqual()

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

Definition at line 435 of file FlutterTextInputPlugin.mm.

435 {
436 return fabsf(x - y) <= delta;
437}
double y
double x

◆ 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}
const char * options
std::u16string text
int BOOL
Definition: windows_types.h:37

◆ IsFieldPasswordRelated()

static BOOL IsFieldPasswordRelated ( NSDictionary *  configuration)
static

Definition at line 392 of file FlutterTextInputPlugin.mm.

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

◆ IsSelectionRectBoundaryCloserToPoint()

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

Definition at line 461 of file FlutterTextInputPlugin.mm.

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

◆ NS_ENUM()

typedef NS_ENUM ( NSInteger  ,
FlutterAutofillType   
)

Definition at line 383 of file FlutterTextInputPlugin.mm.

383 {
384 // The field does not have autofillable content. Additionally if
385 // the field is currently in the autofill context, it will be
386 // removed from the context without triggering autofill save.
387 kFlutterAutofillTypeNone,
388 kFlutterAutofillTypeRegular,
389 kFlutterAutofillTypePassword,
390};

◆ 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}
GLenum type

◆ 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 return UIKeyboardTypeDefault;
144}

◆ ToUIReturnKeyType()

static UIReturnKeyType ToUIReturnKeyType ( NSString *  inputType)
static

Definition at line 158 of file FlutterTextInputPlugin.mm.

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

◆ ToUITextAutoCapitalizationType()

static UITextAutocapitalizationType ToUITextAutoCapitalizationType ( NSDictionary *  type)
static

Definition at line 146 of file FlutterTextInputPlugin.mm.

146 {
147 NSString* textCapitalization = type[@"textCapitalization"];
148 if ([textCapitalization isEqualToString:@"TextCapitalization.characters"]) {
149 return UITextAutocapitalizationTypeAllCharacters;
150 } else if ([textCapitalization isEqualToString:@"TextCapitalization.sentences"]) {
151 return UITextAutocapitalizationTypeSentences;
152 } else if ([textCapitalization isEqualToString:@"TextCapitalization.words"]) {
153 return UITextAutocapitalizationTypeWords;
154 }
155 return UITextAutocapitalizationTypeNone;
156}

◆ ToUITextContentType()

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

Definition at line 211 of file FlutterTextInputPlugin.mm.

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

Variable Documentation

◆ _cachedFirstRect

CGRect _cachedFirstRect

Definition at line 807 of file FlutterTextInputPlugin.mm.

◆ _enableInteractiveSelection

bool _enableInteractiveSelection

Definition at line 816 of file FlutterTextInputPlugin.mm.

◆ _floatingCursorOffset

CGPoint _floatingCursorOffset

Definition at line 815 of file FlutterTextInputPlugin.mm.

◆ _hasPlaceholder

BOOL _hasPlaceholder

Definition at line 809 of file FlutterTextInputPlugin.mm.

◆ _inputViewController

UIInputViewController* _inputViewController

Definition at line 806 of file FlutterTextInputPlugin.mm.

◆ _isFloatingCursorActive

bool _isFloatingCursorActive

Definition at line 814 of file FlutterTextInputPlugin.mm.

◆ _isSystemKeyboardEnabled

bool _isSystemKeyboardEnabled

Definition at line 813 of file FlutterTextInputPlugin.mm.

◆ _scribbleInteractionStatus

FlutterScribbleInteractionStatus _scribbleInteractionStatus

Definition at line 808 of file FlutterTextInputPlugin.mm.

◆ _selectedTextRange

FlutterTextRange* _selectedTextRange

Definition at line 805 of file FlutterTextInputPlugin.mm.

◆ _selectionAffinity

const char* _selectionAffinity
Initial value:
{
int _textInputClient

Definition at line 804 of file FlutterTextInputPlugin.mm.

◆ kAssociatedAutofillFields

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

Definition at line 72 of file FlutterTextInputPlugin.mm.

◆ 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.

◆ kAutofillId

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

Definition at line 76 of file FlutterTextInputPlugin.mm.

◆ kAutofillProperties

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

Definition at line 75 of file FlutterTextInputPlugin.mm.

◆ kClearClientMethod

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

Definition at line 44 of file FlutterTextInputPlugin.mm.

◆ kDeprecatedSetSelectionRectsMethod

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

Definition at line 52 of file FlutterTextInputPlugin.mm.

◆ 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.

◆ kHideMethod

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

Definition at line 40 of file FlutterTextInputPlugin.mm.

◆ 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.

◆ kOnInteractiveKeyboardPointerUpMethod

NSString* const kOnInteractiveKeyboardPointerUpMethod
static
Initial value:
=
@"@"TextInput.onPointerUpForInteractiveKeyboard"

Definition at line 58 of file FlutterTextInputPlugin.mm.

◆ kSecureTextEntry

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

Definition at line 62 of file FlutterTextInputPlugin.mm.

◆ kSetClientMethod

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

Definition at line 41 of file FlutterTextInputPlugin.mm.

◆ kSetEditableSizeAndTransformMethod

NSString* const kSetEditableSizeAndTransformMethod
static
Initial value:
=
@"@"TextInput.setEditableSizeAndTransform"

Definition at line 45 of file FlutterTextInputPlugin.mm.

◆ kSetEditingStateMethod

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

Definition at line 43 of file FlutterTextInputPlugin.mm.

◆ kSetMarkedTextRectMethod

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

Definition at line 47 of file FlutterTextInputPlugin.mm.

◆ kSetPlatformViewClientMethod

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

Definition at line 42 of file FlutterTextInputPlugin.mm.

◆ kSetSelectionRectsMethod

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

Definition at line 53 of file FlutterTextInputPlugin.mm.

◆ kShowMethod

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

Definition at line 39 of file FlutterTextInputPlugin.mm.

◆ 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.

◆ kTextAffinityDownstream

FLUTTER_ASSERT_ARC const 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
staticconstexpr

Definition at line 22 of file FlutterTextInputPlugin.mm.

◆ kUpdateConfigMethod

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

Definition at line 55 of file FlutterTextInputPlugin.mm.