Flutter Engine
 
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"
 
const char * _selectionAffinity
 
FlutterTextRange_selectedTextRange
 
UIInputViewController * _inputViewController
 
CGRect _cachedFirstRect
 
FlutterScribbleInteractionStatus _scribbleInteractionStatus
 
BOOL _hasPlaceholder
 
bool _isSystemKeyboardEnabled
 
bool _isFloatingCursorActive
 
CGPoint _floatingCursorOffset
 
bool _enableInteractiveSelection
 
BOOL _pendingInputHiderRemoval
 

Function Documentation

◆ AutofillIdFromDictionary()

static NSString * AutofillIdFromDictionary ( NSDictionary *  dictionary)
static

Definition at line 331 of file FlutterTextInputPlugin.mm.

331 {
332 NSDictionary* autofill = dictionary[kAutofillProperties];
333 if (autofill) {
334 return autofill[kAutofillId];
335 }
336
337 // When autofill is nil, the field may still need an autofill id
338 // if the field is for password.
339 return [dictionary[kSecureTextEntry] boolValue] ? @"password" : nil;
340}
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 426 of file FlutterTextInputPlugin.mm.

426 {
427 for (NSDictionary* field in configuration[kAssociatedAutofillFields]) {
428 if (IsFieldPasswordRelated(field)) {
429 return kFlutterAutofillTypePassword;
430 }
431 }
432
433 if (IsFieldPasswordRelated(configuration)) {
434 return kFlutterAutofillTypePassword;
435 }
436
437 NSDictionary* autofill = configuration[kAutofillProperties];
438 UITextContentType contentType = ToUITextContentType(autofill[kAutofillHints]);
439 return !autofill || [contentType isEqualToString:@""] ? kFlutterAutofillTypeNone
440 : kFlutterAutofillTypeRegular;
441}
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 443 of file FlutterTextInputPlugin.mm.

443 {
444 return fabsf(x - y) <= delta;
445}
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 87 of file FlutterTextInputPlugin.mm.

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

References text.

◆ IsFieldPasswordRelated()

static BOOL IsFieldPasswordRelated ( NSDictionary *  configuration)
static

Definition at line 400 of file FlutterTextInputPlugin.mm.

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

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

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

◆ ShouldShowSystemKeyboard()

static BOOL ShouldShowSystemKeyboard ( NSDictionary *  type)
static

Definition at line 103 of file FlutterTextInputPlugin.mm.

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

References type.

◆ ToUIKeyboardType()

static UIKeyboardType ToUIKeyboardType ( NSDictionary *  type)
static

Definition at line 107 of file FlutterTextInputPlugin.mm.

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

References type.

◆ ToUIReturnKeyType()

static UIReturnKeyType ToUIReturnKeyType ( NSString *  inputType)
static

Definition at line 166 of file FlutterTextInputPlugin.mm.

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

◆ ToUITextAutoCapitalizationType()

static UITextAutocapitalizationType ToUITextAutoCapitalizationType ( NSDictionary *  type)
static

Definition at line 154 of file FlutterTextInputPlugin.mm.

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

References type.

◆ ToUITextContentType()

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

Definition at line 219 of file FlutterTextInputPlugin.mm.

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

Referenced by AutofillTypeOf(), and IsFieldPasswordRelated().

Variable Documentation

◆ _cachedFirstRect

CGRect _cachedFirstRect

Definition at line 817 of file FlutterTextInputPlugin.mm.

◆ _enableInteractiveSelection

bool _enableInteractiveSelection

Definition at line 826 of file FlutterTextInputPlugin.mm.

◆ _floatingCursorOffset

CGPoint _floatingCursorOffset

Definition at line 825 of file FlutterTextInputPlugin.mm.

◆ _hasPlaceholder

BOOL _hasPlaceholder

Definition at line 819 of file FlutterTextInputPlugin.mm.

◆ _inputViewController

UIInputViewController* _inputViewController

Definition at line 816 of file FlutterTextInputPlugin.mm.

◆ _isFloatingCursorActive

bool _isFloatingCursorActive

Definition at line 824 of file FlutterTextInputPlugin.mm.

◆ _isSystemKeyboardEnabled

bool _isSystemKeyboardEnabled

Definition at line 823 of file FlutterTextInputPlugin.mm.

◆ _pendingInputHiderRemoval

BOOL _pendingInputHiderRemoval
Initial value:
{
NSTimer* _enableFlutterTextInputViewAccessibilityTimer

Definition at line 2515 of file FlutterTextInputPlugin.mm.

◆ _scribbleInteractionStatus

FlutterScribbleInteractionStatus _scribbleInteractionStatus

Definition at line 818 of file FlutterTextInputPlugin.mm.

◆ _selectedTextRange

FlutterTextRange* _selectedTextRange

Definition at line 815 of file FlutterTextInputPlugin.mm.

◆ _selectionAffinity

const char* _selectionAffinity
Initial value:
{
int _textInputClient

Definition at line 814 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.

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