diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/view/FlutterView.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/view/FlutterView.ets index 59038f9f33d24d3a39d5a2a1329f996e68bc3151..b93d4232861ce664685fdf04c815e17568d1bdde 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/view/FlutterView.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/view/FlutterView.ets @@ -15,12 +15,11 @@ import FlutterEngine from '../embedding/engine/FlutterEngine'; import Log from '../util/Log'; import { DVModel, DVModelChildren, DVModelEvents, DVModelParameters } from './DynamicView/dynamicView'; -import display from '@ohos.display'; +import {display} from '@kit.ArkUI' import FlutterManager from '../embedding/ohos/FlutterManager'; import window from '@ohos.window'; import KeyboardManager from '../embedding/ohos/KeyboardManager'; import MouseCursorPlugin from '../plugin/mouse/MouseCursorPlugin'; -import Any from '../plugin/common/Any'; import Settings from '../embedding/ohos/Settings'; import ArrayList from '@ohos.util.ArrayList'; import { EmbeddingNodeController } from '../embedding/ohos/EmbeddingNodeController'; @@ -155,6 +154,19 @@ export class FlutterView { this.navigationAvoidArea = this.mainWindow?.getWindowAvoidArea(window.AvoidAreaType.TYPE_NAVIGATION_INDICATOR); this.gestureAvoidArea = this.mainWindow?.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM_GESTURE); this.keyboardAvoidArea = this.mainWindow?.getWindowAvoidArea(window.AvoidAreaType.TYPE_KEYBOARD); + + //监听系统设置显示大小改变 + try { + display.on("change", ()=>{ + this.displayInfo = display.getDefaultDisplaySync(); + this.viewportMetrics.devicePixelRatio = this.displayInfo?.densityPixels; + this.viewportMetrics.physicalTouchSlop = 1.0 * this.displayInfo?.densityPixels; + Log.i(TAG, "Display on: " + JSON.stringify(this.displayInfo)) + this.updateViewportMetrics() + }); + } catch (e) { + Log.e(TAG, "displayInfo error" + JSON.stringify(e)); + } } private windowSizeChangeCallback = (data: window.Size) => { @@ -236,6 +248,18 @@ export class FlutterView { Log.e(TAG, "mainWindow off error: " + JSON.stringify(e)); } this.mainWindow = null; + + try { + display.off("change", ()=>{ + this.displayInfo = display.getDefaultDisplaySync(); + this.viewportMetrics.devicePixelRatio = this.displayInfo?.densityPixels; + this.viewportMetrics.physicalTouchSlop = 1.0 * this.displayInfo?.densityPixels; + Log.i(TAG, "Display Info: " + JSON.stringify(this.displayInfo)) + this.updateViewportMetrics() + }); + } catch (e) { + Log.e(TAG, "displayInfo off error" + JSON.stringify(e)); + } } attachToFlutterEngine(flutterEngine: FlutterEngine): void { @@ -391,6 +415,7 @@ export class FlutterView { private updateViewportMetrics() { if (this.isAttachedToFlutterEngine()) { + Log.i(TAG, 'updateViewportMetrics devicePixelRatio:' + this.viewportMetrics.devicePixelRatio) this?.flutterEngine?.getFlutterNapi()?.setViewportMetrics(this.viewportMetrics.devicePixelRatio, this.viewportMetrics.physicalWidth, this.viewportMetrics.physicalHeight,