fix: remote id, update text and reserve selection (#10867)

Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
fufesou
2025-02-21 10:41:57 +08:00
committed by GitHub
parent 343f12b380
commit 0b9a6a280e
3 changed files with 21 additions and 5 deletions

View File

@@ -3705,3 +3705,18 @@ Widget workaroundWindowBorder(BuildContext context, Widget child) {
], ],
); );
} }
void updateTextAndPreserveSelection(TextEditingController controller, String text) {
final preSelectionStart = controller.selection.start;
final preSelectionEnd = controller.selection.end;
// Only care about select all for now.
final isSelected = preSelectionEnd > preSelectionStart;
// Set text will make the selection invalid.
controller.text = text;
if (isSelected) {
controller.selection = TextSelection(
baseOffset: 0, extentOffset: controller.value.text.length);
}
}

View File

@@ -225,6 +225,7 @@ class _ConnectionPageState extends State<ConnectionPage>
} }
}); });
} }
Get.put<TextEditingController>(_idEditingController);
Get.put<IDTextEditingController>(_idController); Get.put<IDTextEditingController>(_idController);
windowManager.addListener(this); windowManager.addListener(this);
} }
@@ -395,8 +396,8 @@ class _ConnectionPageState extends State<ConnectionPage>
FocusNode fieldFocusNode, FocusNode fieldFocusNode,
VoidCallback onFieldSubmitted, VoidCallback onFieldSubmitted,
) { ) {
fieldTextEditingController.text = _idController.text; updateTextAndPreserveSelection(
Get.put<TextEditingController>(fieldTextEditingController); fieldTextEditingController, _idController.text);
return Obx(() => TextField( return Obx(() => TextField(
autocorrect: false, autocorrect: false,
enableSuggestions: false, enableSuggestions: false,

View File

@@ -74,6 +74,7 @@ class _ConnectionPageState extends State<ConnectionPage> {
} }
}); });
} }
Get.put<TextEditingController>(_idEditingController);
} }
@override @override
@@ -214,9 +215,8 @@ class _ConnectionPageState extends State<ConnectionPage> {
TextEditingController fieldTextEditingController, TextEditingController fieldTextEditingController,
FocusNode fieldFocusNode, FocusNode fieldFocusNode,
VoidCallback onFieldSubmitted) { VoidCallback onFieldSubmitted) {
fieldTextEditingController.text = _idController.text; updateTextAndPreserveSelection(
Get.put<TextEditingController>( fieldTextEditingController, _idController.text);
fieldTextEditingController);
return AutoSizeTextField( return AutoSizeTextField(
controller: fieldTextEditingController, controller: fieldTextEditingController,
focusNode: fieldFocusNode, focusNode: fieldFocusNode,