From 6c6933b849d83a73e7daa23db17fcb1442df7c6a Mon Sep 17 00:00:00 2001 From: zflyluo Date: Sat, 11 Apr 2026 20:19:53 +0800 Subject: [PATCH] fix(input): keyboard display issue with obscureText on Android (fixes #763) --- .../lib/src/components/input/input_view.dart | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tdesign-component/lib/src/components/input/input_view.dart b/tdesign-component/lib/src/components/input/input_view.dart index 2f037da1b..a55c25dc0 100644 --- a/tdesign-component/lib/src/components/input/input_view.dart +++ b/tdesign-component/lib/src/components/input/input_view.dart @@ -110,20 +110,26 @@ class TInputView extends StatelessWidget { this.onTapOutside, this.selectionControls, this.contextMenuBuilder, - this.enableInteractiveSelection}) + this.enableInteractiveSelection, + this.onTap}) : super( key: key, ); + /// 点击输入框回调 + final GestureTapCallback? onTap; + @override Widget build(BuildContext context) { return TextField( inputFormatters: inputFormatters, readOnly: readOnly, - keyboardType: inputType, + keyboardType: inputType ?? (obscureText ? TextInputType.visiblePassword : null), textInputAction: inputAction, autofocus: autofocus, obscureText: obscureText, + enableSuggestions: !obscureText, + autocorrect: !obscureText, enableInteractiveSelection: enableInteractiveSelection, onEditingComplete: onEditingComplete, onSubmitted: onSubmitted, @@ -131,10 +137,15 @@ class TInputView extends StatelessWidget { onChanged: onChanged, focusNode: focusNode, cursorColor: cursorColor, - maxLines: maxLines, + maxLines: obscureText ? 1 : maxLines, minLines: minLines, maxLength: maxLength, onTapOutside: onTapOutside, + onTap: onTap ?? (obscureText ? () { + if (focusNode != null && focusNode!.hasFocus) { + SystemChannels.textInput.invokeMethod('TextInput.show'); + } + } : null), selectionControls: selectionControls, contextMenuBuilder: contextMenuBuilder, style: textStyle,