Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
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

◆ 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)
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
Definition switches.h:259
int32_t height
int32_t width

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

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

35{{-1, -1}, {9999, 9999}};

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