From 2d75c71e66612ebd53320a427de7ca873246d701 Mon Sep 17 00:00:00 2001 From: laoguanyao <806103474@qq.com> Date: Tue, 24 Dec 2024 16:45:43 +0800 Subject: [PATCH] =?UTF-8?q?pick3.22=E4=BB=93!PR130=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=B8=80=E6=AC=A1=E5=88=A0=E9=99=A4=E5=A4=9A=E4=B8=AA=E5=AD=97?= =?UTF-8?q?=E7=AC=A6flutter=E5=8F=AA=E5=88=A0=E9=99=A4=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: laoguanyao <806103474@qq.com> --- .../ets/embedding/ohos/KeyEventHandler.ets | 2 +- .../plugin/editing/ListenableEditingState.ets | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/KeyEventHandler.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/KeyEventHandler.ets index 58133fd461..1e06b9a187 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/KeyEventHandler.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/KeyEventHandler.ets @@ -156,7 +156,7 @@ export class KeyEventHandler { } // 处理非字符按键 if (event.keyCode == KeyCode.KEYCODE_DEL) { - this.textInputPlugin?.getEditingState().handleDeleteEvent(false, 0) + this.textInputPlugin?.getEditingState().handleDeleteEvent(false, 1) } } this.isShiftMode = event.keyCode == KeyCode.KEYCODE_SHIFT_LEFT diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/editing/ListenableEditingState.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/editing/ListenableEditingState.ets index 351277019b..954595151d 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/editing/ListenableEditingState.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/editing/ListenableEditingState.ets @@ -253,6 +253,10 @@ export class ListenableEditingState { } handleDeleteEvent(leftOrRight: boolean, length: number): void { + if (length === 0) { + return; + } + let start = this.mSelectionStartCache < this.mSelectionEndCache ? this.mSelectionStartCache : this.mSelectionEndCache; let end = this.mSelectionStartCache > this.mSelectionEndCache ? this.mSelectionStartCache : this.mSelectionEndCache; @@ -263,7 +267,12 @@ export class ListenableEditingState { } let unicodeStart = start; if (start == end) { - unicodeStart = FlutterTextUtils.getOffsetBefore(this.mStringCache, start); + for (let i = 0; i < length; i++) { + unicodeStart = FlutterTextUtils.getOffsetBefore(this.mStringCache, unicodeStart); + if (unicodeStart === 0) { + break; + } + } } this.replace(unicodeStart, end, "", 0, 0); this.mSelectionStartCache = unicodeStart; @@ -277,7 +286,12 @@ export class ListenableEditingState { } let unicodeEnd = end; if (start == end) { - unicodeEnd = FlutterTextUtils.getOffsetAfter(this.mStringCache, start); + for (let i = 0; i < length; i++) { + unicodeEnd = FlutterTextUtils.getOffsetAfter(this.mStringCache, unicodeEnd); + if (unicodeEnd === this.mStringCache.length) { + break; + } + } } this.replace(start, unicodeEnd, "", 0, 0); this.mSelectionEndCache = start; -- Gitee