diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/text_editing/input_type.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/text_editing/input_type.dart index c9f07c5d327..20cceedf4ff 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/text_editing/input_type.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/text_editing/input_type.dart @@ -14,7 +14,7 @@ import '../dom.dart'; abstract class EngineInputType { const EngineInputType(); - static EngineInputType fromName(String name, {bool isDecimal = false}) { + static EngineInputType fromName(String name, {bool isDecimal = false, bool isMultiline = false}) { switch (name) { case 'TextInputType.number': return isDecimal ? decimal : number; @@ -27,7 +27,7 @@ abstract class EngineInputType { case 'TextInputType.multiline': return multiline; case 'TextInputType.none': - return none; + return isMultiline ? multilineNone : none; case 'TextInputType.text': default: return text; @@ -37,6 +37,9 @@ abstract class EngineInputType { /// No text input. static const NoTextInputType none = NoTextInputType(); + /// Multi-line no text input. + static const MultilineNoTextInputType multilineNone = MultilineNoTextInputType(); + /// Single-line text input type. static const TextInputType text = TextInputType(); @@ -94,6 +97,31 @@ class NoTextInputType extends EngineInputType { String get inputmodeAttribute => 'none'; } +/// See: https://github.com/flutter/flutter/issues/125875 +/// Multi-line no text input from system virtual keyboard. +/// +/// Use this for inputting multiple lines with a customized keyboard. +/// +/// When Flutter uses a custom virtual keyboard, it sends [TextInputType.none] +/// with a [isMultiline] flag to block the system virtual keyboard. +/// +/// For [MultilineNoTextInputType] (mapped to [TextInputType.none] with +/// [isMultiline] = true), it creates a