Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
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"
import "flutter/shell/platform/darwin/common/InternalFlutterSwiftCommon/InternalFlutterSwiftCommon.h"
import "flutter/shell/platform/darwin/ios/framework/Source/FlutterSharedApplication.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"
 
static NSString *const kEnableInlinePrediction = @"@"enableInlinePrediction"
 
const char * _selectionAffinity
 
FlutterTextRange_selectedTextRange
 
UIInputViewController * _inputViewController
 
CGRect _cachedFirstRect
 
FlutterScribbleInteractionStatus _scribbleInteractionStatus
 
BOOL _hasPlaceholder
 
bool _isSystemKeyboardEnabled
 
bool _isFloatingCursorActive
 
CGPoint _floatingCursorOffset
 
bool _enableInteractiveSelection
 
BOOL _pendingInputViewRemoval
 
BOOL _pendingAutofillRemoval
 

Function Documentation

◆ AutofillIdFromDictionary()

static NSString * AutofillIdFromDictionary ( NSDictionary *  dictionary)
static

Definition at line 332 of file FlutterTextInputPlugin.mm.

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

References kAutofillId, kAutofillProperties, and kSecureTextEntry.

Referenced by IsFieldPasswordRelated().

◆ AutofillTypeOf()

static FlutterAutofillType AutofillTypeOf ( NSDictionary *  configuration)
static

Definition at line 427 of file FlutterTextInputPlugin.mm.

427 {
428 for (NSDictionary* field in configuration[kAssociatedAutofillFields]) {
429 if (IsFieldPasswordRelated(field)) {
430 return kFlutterAutofillTypePassword;
431 }
432 }
433
434 if (IsFieldPasswordRelated(configuration)) {
435 return kFlutterAutofillTypePassword;
436 }
437
438 NSDictionary* autofill = configuration[kAutofillProperties];
439 UITextContentType contentType = ToUITextContentType(autofill[kAutofillHints]);
440 return !autofill || [contentType isEqualToString:@""] ? kFlutterAutofillTypeNone
441 : kFlutterAutofillTypeRegular;
442}
static NSString *const kAutofillHints
static NSString *const kAssociatedAutofillFields
static BOOL IsFieldPasswordRelated(NSDictionary *configuration)
static UITextContentType ToUITextContentType(NSArray< NSString * > *hints)

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

◆ IsApproximatelyEqual()

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

Definition at line 444 of file FlutterTextInputPlugin.mm.

444 {
445 return fabsf(x - y) <= delta;
446}
int32_t x
double y

References x, and y.

Referenced by FlutterTextPosition::initWithIndex:affinity:.

◆ IsEmoji()

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

Definition at line 88 of file FlutterTextInputPlugin.mm.

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

References text.

◆ IsFieldPasswordRelated()

static BOOL IsFieldPasswordRelated ( NSDictionary *  configuration)
static

Definition at line 401 of file FlutterTextInputPlugin.mm.

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

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 470 of file FlutterTextInputPlugin.mm.

476 {
477 // The point is inside the selectionRect's corresponding half-rect area.
478 if (CGRectContainsPoint(
479 CGRectMake(
480 selectionRect.origin.x + ((useTrailingBoundaryOfSelectionRect ^ selectionRectIsRTL)
481 ? 0.5 * selectionRect.size.width
482 : 0),
483 selectionRect.origin.y, 0.5 * selectionRect.size.width, selectionRect.size.height),
484 point)) {
485 return YES;
486 }
487 // pointForSelectionRect is either leading-center or trailing-center point of selectionRect.
488 CGPoint pointForSelectionRect = CGPointMake(
489 selectionRect.origin.x +
490 (selectionRectIsRTL ^ useTrailingBoundaryOfSelectionRect ? selectionRect.size.width : 0),
491 selectionRect.origin.y + selectionRect.size.height * 0.5);
492 float yDist = fabs(pointForSelectionRect.y - point.y);
493 float xDist = fabs(pointForSelectionRect.x - point.x);
494
495 // pointForOtherSelectionRect is the leading-center point of otherSelectionRect.
496 CGPoint pointForOtherSelectionRect = CGPointMake(
497 otherSelectionRect.origin.x + (otherSelectionRectIsRTL ? otherSelectionRect.size.width : 0),
498 otherSelectionRect.origin.y + otherSelectionRect.size.height * 0.5);
499 float yDistOther = fabs(pointForOtherSelectionRect.y - point.y);
500 float xDistOther = fabs(pointForOtherSelectionRect.x - point.x);
501
502 // This serves a similar purpose to IsApproximatelyEqual, allowing a little buffer before
503 // declaring something closer vertically to account for the small variations in size and position
504 // of SelectionRects, especially when dealing with emoji.
505 BOOL isCloserVertically = yDist < yDistOther - verticalPrecision;
506 BOOL isEqualVertically = IsApproximatelyEqual(yDist, yDistOther, verticalPrecision);
507 BOOL isAboveBottomOfLine = point.y <= selectionRect.origin.y + selectionRect.size.height;
508 BOOL isCloserHorizontally = xDist < xDistOther;
509 BOOL isBelowBottomOfLine = point.y > selectionRect.origin.y + selectionRect.size.height;
510 // Is "farther away", or is closer to the end of the text line.
511 BOOL isFarther;
512 if (selectionRectIsRTL) {
513 isFarther = selectionRect.origin.x < otherSelectionRect.origin.x;
514 } else {
515 isFarther = selectionRect.origin.x +
516 (useTrailingBoundaryOfSelectionRect ? selectionRect.size.width : 0) >
517 otherSelectionRect.origin.x;
518 }
519 return (isCloserVertically ||
520 (isEqualVertically &&
521 ((isAboveBottomOfLine && isCloserHorizontally) || (isBelowBottomOfLine && isFarther))));
522}
static BOOL IsApproximatelyEqual(float x, float y, float delta)
it will be possible to load the file into Perfetto s trace viewer use test Running tests that layout and measure text will not yield consistent results across various platforms Enabling this option will make font resolution default to the Ahem test font on all 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
int32_t height
int32_t width

◆ NS_ENUM()

typedef NS_ENUM ( NSInteger  ,
FlutterAutofillType   
)

Definition at line 392 of file FlutterTextInputPlugin.mm.

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

◆ ShouldShowSystemKeyboard()

static BOOL ShouldShowSystemKeyboard ( NSDictionary *  type)
static

Definition at line 104 of file FlutterTextInputPlugin.mm.

104 {
105 NSString* inputType = type[@"name"];
106 return ![inputType isEqualToString:@"TextInputType.none"];
107}
impeller::ShaderType type

References type.

◆ ToUIKeyboardType()

static UIKeyboardType ToUIKeyboardType ( NSDictionary *  type)
static

Definition at line 108 of file FlutterTextInputPlugin.mm.

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

References type.

◆ ToUIReturnKeyType()

static UIReturnKeyType ToUIReturnKeyType ( NSString *  inputType)
static

Definition at line 167 of file FlutterTextInputPlugin.mm.

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

◆ ToUITextAutoCapitalizationType()

static UITextAutocapitalizationType ToUITextAutoCapitalizationType ( NSDictionary *  type)
static

Definition at line 155 of file FlutterTextInputPlugin.mm.

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

References type.

◆ ToUITextContentType()

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

Definition at line 220 of file FlutterTextInputPlugin.mm.

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

Referenced by AutofillTypeOf(), and IsFieldPasswordRelated().

Variable Documentation

◆ _cachedFirstRect

CGRect _cachedFirstRect

Definition at line 818 of file FlutterTextInputPlugin.mm.

◆ _enableInteractiveSelection

bool _enableInteractiveSelection

Definition at line 827 of file FlutterTextInputPlugin.mm.

◆ _floatingCursorOffset

CGPoint _floatingCursorOffset

Definition at line 826 of file FlutterTextInputPlugin.mm.

◆ _hasPlaceholder

BOOL _hasPlaceholder

Definition at line 820 of file FlutterTextInputPlugin.mm.

◆ _inputViewController

UIInputViewController* _inputViewController

Definition at line 817 of file FlutterTextInputPlugin.mm.

◆ _isFloatingCursorActive

bool _isFloatingCursorActive

Definition at line 825 of file FlutterTextInputPlugin.mm.

◆ _isSystemKeyboardEnabled

bool _isSystemKeyboardEnabled

Definition at line 824 of file FlutterTextInputPlugin.mm.

◆ _pendingAutofillRemoval

BOOL _pendingAutofillRemoval

Definition at line 2546 of file FlutterTextInputPlugin.mm.

◆ _pendingInputViewRemoval

BOOL _pendingInputViewRemoval
Initial value:
{
NSTimer* _enableFlutterTextInputViewAccessibilityTimer

Definition at line 2545 of file FlutterTextInputPlugin.mm.

◆ _scribbleInteractionStatus

FlutterScribbleInteractionStatus _scribbleInteractionStatus

Definition at line 819 of file FlutterTextInputPlugin.mm.

◆ _selectedTextRange

FlutterTextRange* _selectedTextRange

Definition at line 816 of file FlutterTextInputPlugin.mm.

◆ _selectionAffinity

const char* _selectionAffinity
Initial value:
{
int _textInputClient

Definition at line 815 of file FlutterTextInputPlugin.mm.

◆ kAssociatedAutofillFields

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

Definition at line 74 of file FlutterTextInputPlugin.mm.

Referenced by AutofillTypeOf(), and EnableAutocomplete().

◆ kAutocorrectionType

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

Definition at line 82 of file FlutterTextInputPlugin.mm.

◆ kAutofillEditingValue

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

Definition at line 79 of file FlutterTextInputPlugin.mm.

◆ kAutofillHints

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

◆ kAutofillId

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

Definition at line 78 of file FlutterTextInputPlugin.mm.

Referenced by AutofillIdFromDictionary().

◆ kAutofillProperties

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

◆ kClearClientMethod

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

Definition at line 46 of file FlutterTextInputPlugin.mm.

◆ kDeprecatedSetSelectionRectsMethod

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

Definition at line 54 of file FlutterTextInputPlugin.mm.

◆ kEnableDeltaModel

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

Definition at line 68 of file FlutterTextInputPlugin.mm.

◆ kEnableInlinePrediction

NSString* const kEnableInlinePrediction = @"@"enableInlinePrediction"
static

Definition at line 83 of file FlutterTextInputPlugin.mm.

◆ kEnableInteractiveSelection

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

Definition at line 69 of file FlutterTextInputPlugin.mm.

◆ kFinishAutofillContextMethod

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

Definition at line 50 of file FlutterTextInputPlugin.mm.

◆ kHideMethod

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

Definition at line 42 of file FlutterTextInputPlugin.mm.

◆ kInputAction

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

Definition at line 67 of file FlutterTextInputPlugin.mm.

◆ kInvalidFirstRect

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

Definition at line 37 of file FlutterTextInputPlugin.mm.

37{{-1, -1}, {9999, 9999}};

◆ kKeyboardAnimationDelaySeconds

const NSTimeInterval kKeyboardAnimationDelaySeconds = 0.1
static

Definition at line 28 of file FlutterTextInputPlugin.mm.

◆ kKeyboardAnimationTimeToCompleteion

const NSTimeInterval kKeyboardAnimationTimeToCompleteion = 0.3
static

Definition at line 31 of file FlutterTextInputPlugin.mm.

◆ kKeyboardAppearance

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

Definition at line 66 of file FlutterTextInputPlugin.mm.

◆ kKeyboardType

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

Definition at line 65 of file FlutterTextInputPlugin.mm.

◆ kOnInteractiveKeyboardPointerMoveMethod

NSString* const kOnInteractiveKeyboardPointerMoveMethod
static
Initial value:
=
@"@"TextInput.onPointerMoveForInteractiveKeyboard"

Definition at line 58 of file FlutterTextInputPlugin.mm.

◆ kOnInteractiveKeyboardPointerUpMethod

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

Definition at line 60 of file FlutterTextInputPlugin.mm.

◆ kSecureTextEntry

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

◆ kSetClientMethod

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

Definition at line 43 of file FlutterTextInputPlugin.mm.

◆ kSetEditableSizeAndTransformMethod

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

Definition at line 47 of file FlutterTextInputPlugin.mm.

◆ kSetEditingStateMethod

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

Definition at line 45 of file FlutterTextInputPlugin.mm.

◆ kSetMarkedTextRectMethod

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

Definition at line 49 of file FlutterTextInputPlugin.mm.

◆ kSetPlatformViewClientMethod

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

Definition at line 44 of file FlutterTextInputPlugin.mm.

◆ kSetSelectionRectsMethod

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

Definition at line 55 of file FlutterTextInputPlugin.mm.

◆ kShowMethod

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

Definition at line 41 of file FlutterTextInputPlugin.mm.

◆ kSmartDashesType

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

Definition at line 71 of file FlutterTextInputPlugin.mm.

◆ kSmartQuotesType

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

Definition at line 72 of file FlutterTextInputPlugin.mm.

◆ kStartLiveTextInputMethod

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

Definition at line 56 of file FlutterTextInputPlugin.mm.

◆ kTextAffinityDownstream

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

Definition at line 20 of file FlutterTextInputPlugin.mm.

◆ kTextAffinityUpstream

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

Definition at line 21 of file FlutterTextInputPlugin.mm.

◆ kUITextInputAccessibilityEnablingDelaySeconds

constexpr double kUITextInputAccessibilityEnablingDelaySeconds = 0.5
staticconstexpr

Definition at line 24 of file FlutterTextInputPlugin.mm.

◆ kUpdateConfigMethod

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

Definition at line 57 of file FlutterTextInputPlugin.mm.