forked from firka/flutter
Support for decimal and signed numeric keyboard (flutter/engine#4853)
* Support for decimal and signed numeric keyboard * Comments
This commit is contained in:
committed by
GitHub
parent
ee3f5ece99
commit
05943ceb68
@@ -77,13 +77,20 @@ public class TextInputPlugin implements MethodCallHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private static int inputTypeFromTextInputType(String inputType,
|
||||
boolean obscureText,
|
||||
boolean autocorrect) {
|
||||
private static int inputTypeFromTextInputType(
|
||||
JSONObject type, boolean obscureText, boolean autocorrect) throws JSONException {
|
||||
|
||||
String inputType = type.getString("name");
|
||||
if (inputType.equals("TextInputType.datetime"))
|
||||
return InputType.TYPE_CLASS_DATETIME;
|
||||
if (inputType.equals("TextInputType.number"))
|
||||
return InputType.TYPE_CLASS_NUMBER;
|
||||
if (inputType.equals("TextInputType.number")) {
|
||||
int textType = InputType.TYPE_CLASS_NUMBER;
|
||||
if (type.optBoolean("signed"))
|
||||
textType |= InputType.TYPE_NUMBER_FLAG_SIGNED;
|
||||
if (type.optBoolean("decimal"))
|
||||
textType |= InputType.TYPE_NUMBER_FLAG_DECIMAL;
|
||||
return textType;
|
||||
}
|
||||
if (inputType.equals("TextInputType.phone"))
|
||||
return InputType.TYPE_CLASS_PHONE;
|
||||
|
||||
@@ -119,7 +126,7 @@ public class TextInputPlugin implements MethodCallHandler {
|
||||
return null;
|
||||
|
||||
outAttrs.inputType = inputTypeFromTextInputType(
|
||||
mConfiguration.getString("inputType"),
|
||||
mConfiguration.getJSONObject("inputType"),
|
||||
mConfiguration.optBoolean("obscureText"),
|
||||
mConfiguration.optBoolean("autocorrect", true));
|
||||
outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_FULLSCREEN;
|
||||
|
||||
@@ -9,13 +9,17 @@
|
||||
static const char _kTextAffinityDownstream[] = "TextAffinity.downstream";
|
||||
static const char _kTextAffinityUpstream[] = "TextAffinity.upstream";
|
||||
|
||||
static UIKeyboardType ToUIKeyboardType(NSString* inputType) {
|
||||
static UIKeyboardType ToUIKeyboardType(NSDictionary* type) {
|
||||
NSString* inputType = type[@"name"];
|
||||
if ([inputType isEqualToString:@"TextInputType.text"])
|
||||
return UIKeyboardTypeDefault;
|
||||
if ([inputType isEqualToString:@"TextInputType.multiline"])
|
||||
return UIKeyboardTypeDefault;
|
||||
if ([inputType isEqualToString:@"TextInputType.number"])
|
||||
if ([inputType isEqualToString:@"TextInputType.number"]) {
|
||||
if ([type[@"signed"] boolValue])
|
||||
return UIKeyboardTypeNumbersAndPunctuation;
|
||||
return UIKeyboardTypeDecimalPad;
|
||||
}
|
||||
if ([inputType isEqualToString:@"TextInputType.phone"])
|
||||
return UIKeyboardTypePhonePad;
|
||||
if ([inputType isEqualToString:@"TextInputType.emailAddress"])
|
||||
@@ -606,9 +610,10 @@ static UITextAutocapitalizationType ToUITextAutocapitalizationType(NSString* inp
|
||||
}
|
||||
|
||||
- (void)setTextInputClient:(int)client withConfiguration:(NSDictionary*)configuration {
|
||||
_view.keyboardType = ToUIKeyboardType(configuration[@"inputType"]);
|
||||
_view.returnKeyType = ToUIReturnKeyType(configuration[@"inputType"]);
|
||||
_view.autocapitalizationType = ToUITextAutocapitalizationType(configuration[@"inputType"]);
|
||||
NSDictionary* inputType = configuration[@"inputType"];
|
||||
_view.keyboardType = ToUIKeyboardType(inputType);
|
||||
_view.returnKeyType = ToUIReturnKeyType(inputType[@"name"]);
|
||||
_view.autocapitalizationType = ToUITextAutocapitalizationType(inputType[@"name"]);
|
||||
_view.secureTextEntry = [configuration[@"obscureText"] boolValue];
|
||||
NSString* autocorrect = configuration[@"autocorrect"];
|
||||
_view.autocorrectionType = autocorrect && ![autocorrect boolValue]
|
||||
|
||||
Reference in New Issue
Block a user