diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/platform/PlatformViewsController.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/platform/PlatformViewsController.ets index 45c4177ae286ebcf583a6b14fef02292f91e36db..a89b0df74feca960ec4d4983d49e60d8435c90f3 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/platform/PlatformViewsController.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/platform/PlatformViewsController.ets @@ -156,17 +156,18 @@ export default class PlatformViewsController implements PlatformViewsAccessibili this.textureRegistry!.unregisterTexture(textureId); } + this.viewIdWithNodeController.get(viewId)?.removeBuilderNode() + this.viewIdWithNodeController.get(viewId)?.disposeFrameNode() + this.viewIdWithNodeController.delete(viewId); + let viewWrapper: PlatformViewWrapper | null = this.viewWrappers.get(viewId) || null; - if (viewWrapper != null) { - this.viewIdWithNodeController.get(viewId)?.removeBuilderNode() - this.viewIdWithNodeController.get(viewId)?.disposeFrameNode() - this.viewIdWithNodeController.delete(viewId); - if (this.flutterView) { - let index = this.flutterView.getDVModel().children.indexOf(viewWrapper.getDvModel()!); + if (viewWrapper != null && this.flutterView) { + let index = this.flutterView.getDVModel().children.indexOf(viewWrapper.getDvModel()!); + if (index > -1) { this.flutterView.getDVModel().children.splice(index, 1); } - this.viewWrappers.delete(viewId); } + this.viewWrappers.delete(viewId); try { platformView.dispose(); @@ -385,9 +386,6 @@ export default class PlatformViewsController implements PlatformViewsAccessibili public attachToView(newFlutterView : FlutterView) { this.flutterView = newFlutterView; - for (let wrapper of this.viewWrappers.values()) { - this.flutterView?.getDVModel().children.push(wrapper.getDvModel()!); - } for (let mutator of this.platformViewParent.values()) { this.flutterView?.getDVModel().children.push(mutator.getDvModel()!); } @@ -397,9 +395,6 @@ export default class PlatformViewsController implements PlatformViewsAccessibili } public detachFromView(): void { - for (let index = 0; index < this.viewWrappers.size; index++) { - this.flutterView?.getDVModel().children.pop(); - } for (let index = 0; index < this.platformViewParent.size; index++) { this.flutterView?.getDVModel().children.pop(); }