add new keyboard types and missing autofill hints (#18202)
diff --git a/shell/platform/android/io/flutter/embedding/engine/systemchannels/TextInputChannel.java b/shell/platform/android/io/flutter/embedding/engine/systemchannels/TextInputChannel.java
index 33053b5..b206e5a 100644
--- a/shell/platform/android/io/flutter/embedding/engine/systemchannels/TextInputChannel.java
+++ b/shell/platform/android/io/flutter/embedding/engine/systemchannels/TextInputChannel.java
@@ -544,6 +544,8 @@
public enum TextInputType {
TEXT("TextInputType.text"),
DATETIME("TextInputType.datetime"),
+ NAME("TextInputType.name"),
+ POSTAL_ADDRESS("TextInputType.address"),
NUMBER("TextInputType.number"),
PHONE("TextInputType.phone"),
MULTILINE("TextInputType.multiline"),
diff --git a/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java b/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java
index d6d48a7..f707200 100644
--- a/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java
+++ b/shell/platform/android/io/flutter/plugin/editing/TextInputPlugin.java
@@ -194,6 +194,10 @@
textType |= InputType.TYPE_TEXT_VARIATION_URI;
} else if (type.type == TextInputChannel.TextInputType.VISIBLE_PASSWORD) {
textType |= InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD;
+ } else if (type.type == TextInputChannel.TextInputType.NAME) {
+ textType |= InputType.TYPE_TEXT_VARIATION_PERSON_NAME;
+ } else if (type.type == TextInputChannel.TextInputType.POSTAL_ADDRESS) {
+ textType |= InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS;
}
if (obscureText) {
diff --git a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm
index f1ee0a9..84e4f5f 100644
--- a/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm
+++ b/shell/platform/darwin/ios/framework/Source/FlutterTextInputPlugin.mm
@@ -13,10 +13,16 @@
static UIKeyboardType ToUIKeyboardType(NSDictionary* type) {
NSString* inputType = type[@"name"];
- if ([inputType isEqualToString:@"TextInputType.text"])
+ if ([inputType isEqualToString:@"TextInputType.address"])
return UIKeyboardTypeDefault;
+ if ([inputType isEqualToString:@"TextInputType.datetime"])
+ return UIKeyboardTypeNumbersAndPunctuation;
+ if ([inputType isEqualToString:@"TextInputType.emailAddress"])
+ return UIKeyboardTypeEmailAddress;
if ([inputType isEqualToString:@"TextInputType.multiline"])
return UIKeyboardTypeDefault;
+ if ([inputType isEqualToString:@"TextInputType.name"])
+ return UIKeyboardTypeNamePhonePad;
if ([inputType isEqualToString:@"TextInputType.number"]) {
if ([type[@"signed"] boolValue])
return UIKeyboardTypeNumbersAndPunctuation;
@@ -26,8 +32,8 @@
}
if ([inputType isEqualToString:@"TextInputType.phone"])
return UIKeyboardTypePhonePad;
- if ([inputType isEqualToString:@"TextInputType.emailAddress"])
- return UIKeyboardTypeEmailAddress;
+ if ([inputType isEqualToString:@"TextInputType.text"])
+ return UIKeyboardTypeDefault;
if ([inputType isEqualToString:@"TextInputType.url"])
return UIKeyboardTypeURL;
return UIKeyboardTypeDefault;
@@ -194,6 +200,10 @@
if ([hint isEqualToString:@"oneTimeCode"]) {
return UITextContentTypeOneTimeCode;
}
+
+ if ([hint isEqualToString:@"newPassword"]) {
+ return UITextContentTypeNewPassword;
+ }
}
return hints[0];