diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/FlutterEngineConnectionRegistry.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/FlutterEngineConnectionRegistry.ets index bdcddb159e110ea3daace7a4983306835b333a46..e36a202bbbc3beacdd3b5e5ae61fccd5bbd652f7 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/FlutterEngineConnectionRegistry.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/FlutterEngineConnectionRegistry.ets @@ -12,12 +12,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - +import { AbilityConstant, Want, common } from '@kit.AbilityKit'; import PluginRegistry from './plugins/PluginRegistry'; import { FlutterAssets, FlutterPlugin, FlutterPluginBinding } from './plugins/FlutterPlugin'; import FlutterEngine from './FlutterEngine'; import AbilityAware from './plugins/ability/AbilityAware'; -import UIAbility from '@ohos.app.ability.UIAbility'; import { AbilityPluginBinding, WindowFocusChangedListener, @@ -25,15 +24,11 @@ import { NewWantListener } from './plugins/ability/AbilityPluginBinding'; import HashSet from '@ohos.util.HashSet'; -import Want from '@ohos.app.ability.Want'; -import AbilityConstant from '@ohos.app.ability.AbilityConstant'; -import common from '@ohos.app.ability.common'; import FlutterLoader from './loader/FlutterLoader'; import Log from '../../util/Log'; import ToolUtils from '../../util/ToolUtils'; import AbilityControlSurface from './plugins/ability/AbilityControlSurface'; import ExclusiveAppComponent from '../ohos/ExclusiveAppComponent'; -import FlutterEngineGroup from './FlutterEngineGroup'; import Any from '../../plugin/common/Any'; const TAG = "FlutterEngineCxnRegistry"; @@ -51,7 +46,7 @@ export default class FlutterEngineConnectionRegistry implements PluginRegistry, // AbilityAware private abilityAwarePlugins = new Map(); - private exclusiveAbility: ExclusiveAppComponent | null = null; + private exclusiveAbility: ExclusiveAppComponent | null = null; private abilityPluginBinding: FlutterEngineAbilityPluginBinding | null = null; constructor(appContext: common.Context, flutterEngine: FlutterEngine, flutterLoader: FlutterLoader) { @@ -137,14 +132,14 @@ export default class FlutterEngineConnectionRegistry implements PluginRegistry, return this.exclusiveAbility != null; } - attachToAbility(exclusiveAbility: ExclusiveAppComponent): void { + attachToAbility(exclusiveAbility: ExclusiveAppComponent): void { if (this.exclusiveAbility != null) { this.exclusiveAbility.detachFromFlutterEngine(); } // If we were already attached to an app component, detach from it. this.detachFromAppComponent(); this.exclusiveAbility = exclusiveAbility; - this.attachToAbilityInternal(exclusiveAbility.getAppComponent(),); + this.attachToAbilityInternal(exclusiveAbility.getAppComponent()); } detachFromAbility(): void { @@ -178,8 +173,8 @@ export default class FlutterEngineConnectionRegistry implements PluginRegistry, } } - private attachToAbilityInternal(ability: UIAbility): void { - this.abilityPluginBinding = new FlutterEngineAbilityPluginBinding(ability); + private attachToAbilityInternal(context: common.UIAbilityContext): void { + this.abilityPluginBinding = new FlutterEngineAbilityPluginBinding(context); // Notify all AbilityAware plugins that they are now attached to a new Ability. this.abilityAwarePlugins.forEach(abilityAware => abilityAware.onAttachedToAbility(this.abilityPluginBinding!)); } @@ -197,18 +192,18 @@ export default class FlutterEngineConnectionRegistry implements PluginRegistry, } class FlutterEngineAbilityPluginBinding implements AbilityPluginBinding { - private ability: UIAbility; + private context: common.UIAbilityContext; private onNewWantListeners = new HashSet(); private onWindowFocusChangedListeners = new HashSet(); private onSaveStateListeners = new HashSet(); - constructor(ability: UIAbility) { - this.ability = ability; + constructor(context: common.UIAbilityContext) { + this.context = context; } - getAbility(): UIAbility { - return this.ability; + getAbilityContext(): common.UIAbilityContext { + return this.context; } addOnNewWantListener(listener: NewWantListener): void { diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/plugins/ability/AbilityControlSurface.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/plugins/ability/AbilityControlSurface.ets index 947ccef4ba35c189f2c74f81c0f53eaf025cba36..1bc2d6fd1336e9f3e75ad7babeca0ffff9def9a8 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/plugins/ability/AbilityControlSurface.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/plugins/ability/AbilityControlSurface.ets @@ -12,14 +12,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import AbilityConstant from '@ohos.app.ability.AbilityConstant'; -import Want from '@ohos.app.ability.Want'; -import UIAbility from '@ohos.app.ability.UIAbility'; +import { AbilityConstant, Want, common } from '@kit.AbilityKit'; import ExclusiveAppComponent from '../../../ohos/ExclusiveAppComponent'; export default interface ActivityControlSurface { - attachToAbility(exclusiveActivity: ExclusiveAppComponent): void; + attachToAbility(exclusiveActivity: ExclusiveAppComponent): void; detachFromAbility(): void; onNewWant(want: Want, launchParams: AbilityConstant.LaunchParam): void; onWindowFocusChanged(hasFocus: boolean): void; diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/plugins/ability/AbilityPluginBinding.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/plugins/ability/AbilityPluginBinding.ets index 349010b14ee70aff187ff938c146f14d6c7a080e..d7ddebf3c9428c5048a60d57959efe659fa6ec7f 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/plugins/ability/AbilityPluginBinding.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/plugins/ability/AbilityPluginBinding.ets @@ -12,13 +12,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import UIAbility from '@ohos.app.ability.UIAbility' -import Want from '@ohos.app.ability.Want'; -import AbilityConstant from '@ohos.app.ability.AbilityConstant'; +import { AbilityConstant, Want, common } from '@kit.AbilityKit'; export interface AbilityPluginBinding { - getAbility(): UIAbility; + getAbilityContext(): common.UIAbilityContext; /** * Adds a listener that is invoked whenever the associated {@link ohos.app.ability.UIAbility}'s {@code * onNewWant(...)} method is invoked. diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterAbility.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterAbility.ets index 8ba4463178e5737bd4e4e4d4f27aa6457c67ef83..0443792321e38d23b318ea9ef559d0381943ec9c 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterAbility.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterAbility.ets @@ -12,8 +12,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import UIAbility from '@ohos.app.ability.UIAbility'; +import { + AbilityConstant, + Configuration, + ConfigurationConstant, + UIAbility, + Want, + appRecovery, + common, + errorManager +} from '@kit.AbilityKit'; import window from '@ohos.window'; import { FlutterAbilityAndEntryDelegate, Host } from './FlutterAbilityAndEntryDelegate'; import Log from '../../util/Log'; @@ -21,18 +29,10 @@ import FlutterEngine from '../engine/FlutterEngine'; import PlatformPlugin from '../../plugin/PlatformPlugin'; import FlutterShellArgs from '../engine/FlutterShellArgs'; import FlutterAbilityLaunchConfigs from './FlutterAbilityLaunchConfigs'; -import common from '@ohos.app.ability.common'; -import Want from '@ohos.app.ability.Want'; import { FlutterPlugin } from '../engine/plugins/FlutterPlugin'; -import AbilityConstant from '@ohos.app.ability.AbilityConstant'; import I18n from '@ohos.i18n' import { PlatformBrightness } from '../engine/systemchannels/SettingsChannel'; -import ConfigurationConstant from '@ohos.app.ability.ConfigurationConstant'; -import { Configuration } from '@ohos.app.ability.Configuration'; - import ExclusiveAppComponent from './ExclusiveAppComponent'; -import errorManager from '@ohos.app.ability.errorManager'; -import appRecovery from '@ohos.app.ability.appRecovery'; import FlutterManager from './FlutterManager'; import { FlutterView } from '../../view/FlutterView'; import ApplicationInfoLoader from '../engine/loader/ApplicationInfoLoader'; @@ -72,12 +72,9 @@ export class FlutterAbility extends UIAbility implements Host { AppStorage.setOrCreate('fontSizeScale', this.context.config.fontSizeScale); Log.i(TAG, "bundleCodeDir=" + this.context.bundleCodeDir); - FlutterManager.getInstance().pushUIAbility(this) - this.delegate = new FlutterAbilityAndEntryDelegate(this); await this?.delegate?.onAttach(this.context); Log.i(TAG, 'onAttach end'); - this?.delegate?.platformPlugin?.setUIAbilityContext(this.context); this?.delegate?.onRestoreInstanceState(want); if (this.stillAttachedForEvent("onCreate")) { @@ -111,7 +108,6 @@ export class FlutterAbility extends UIAbility implements Host { } onDestroy() { - FlutterManager.getInstance().popUIAbility(this); this.context.eventHub.off(EVENT_BACK_PRESS); errorManager.off('error', this.errorManagerId); @@ -136,7 +132,6 @@ export class FlutterAbility extends UIAbility implements Host { * @param windowStage */ onWindowStageCreate(windowStage: window.WindowStage) { - FlutterManager.getInstance().pushWindowStage(this, windowStage); this.delegate?.initWindow(); this.mainWindow = windowStage.getMainWindowSync(); try { @@ -188,7 +183,6 @@ export class FlutterAbility extends UIAbility implements Host { } onWindowStageDestroy() { - FlutterManager.getInstance().popWindowStage(this); if (this.stillAttachedForEvent("onWindowStageDestroy")) { this?.delegate?.onWindowStageDestroy(); } @@ -217,8 +211,8 @@ export class FlutterAbility extends UIAbility implements Host { * host所有实现方法开始======start */ - getAbility(): UIAbility { - return this; + getAbilityContext(): common.UIAbilityContext { + return this.context; } getFlutterAbilityAndEntryDelegate(): FlutterAbilityAndEntryDelegate | null{ @@ -319,7 +313,7 @@ export class FlutterAbility extends UIAbility implements Host { return true; } - getExclusiveAppComponent(): ExclusiveAppComponent | null { + getExclusiveAppComponent(): ExclusiveAppComponent | null { return this.delegate ? this.delegate : null } diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterAbilityAndEntryDelegate.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterAbilityAndEntryDelegate.ets index 480371d80703aafa8be51b208ed052bb921375bc..8b03d20105f8f21bd909873259f75732fd0267d5 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterAbilityAndEntryDelegate.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterAbilityAndEntryDelegate.ets @@ -12,21 +12,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -import common from '@ohos.app.ability.common'; +import { AbilityConstant, Want, common } from '@kit.AbilityKit'; import FlutterEngineConfigurator from './FlutterEngineConfigurator'; import FlutterEngineProvider from './FlutterEngineProvider'; import FlutterEngine from '../engine/FlutterEngine'; import PlatformPlugin, { PlatformPluginDelegate } from '../../plugin/PlatformPlugin'; -import Want from '@ohos.app.ability.Want'; import FlutterShellArgs from '../engine/FlutterShellArgs'; -import DartExecutor, { DartEntrypoint } from '../engine/dart/DartExecutor'; +import { DartEntrypoint } from '../engine/dart/DartExecutor'; import FlutterAbilityLaunchConfigs from './FlutterAbilityLaunchConfigs'; import Log from '../../util/Log'; import FlutterInjector from '../../FlutterInjector'; -import UIAbility from '@ohos.app.ability.UIAbility'; import ExclusiveAppComponent from './ExclusiveAppComponent'; -import AbilityConstant from '@ohos.app.ability.AbilityConstant'; import TextInputPlugin from '../../plugin/editing/TextInputPlugin'; import { FlutterPlugin } from '../engine/plugins/FlutterPlugin'; import FlutterEngineCache from '../engine/FlutterEngineCache'; @@ -46,7 +42,7 @@ const FRAMEWORK_RESTORATION_BUNDLE_KEY = "framework"; * 1、初始化engine * 2、处理ability生命周期回调 */ -class FlutterAbilityAndEntryDelegate implements ExclusiveAppComponent { +class FlutterAbilityAndEntryDelegate implements ExclusiveAppComponent { protected host?: Host | null; flutterEngine?: FlutterEngine | null; platformPlugin?: PlatformPlugin; @@ -257,7 +253,7 @@ class FlutterAbilityAndEntryDelegate implements ExclusiveAppComponent .setDartEntrypointArgs(this.host?.getDartEntrypointArgs() ?? []); } - createView(context: Context): FlutterView { + createView(context: common.UIAbilityContext): FlutterView { this.flutterView = FlutterManager.getInstance().createFlutterView(context) if (this.flutterEngine && this.host?.attachToEngineAutomatically()) { this.flutterView.attachToFlutterEngine(this.flutterEngine!!); @@ -403,14 +399,14 @@ class FlutterAbilityAndEntryDelegate implements ExclusiveAppComponent this.host?.detachFromFlutterEngine(); } - getAppComponent(): UIAbility { - const ability = this.host?.getAbility(); - if (ability == null) { + getAppComponent(): common.UIAbilityContext { + const context = this.host?.getAbilityContext(); + if (context == null) { throw new Error( "FlutterAbilityAndFragmentDelegate's getAppComponent should only " - + "be queried after onAttach, when the host's ability should always be non-null"); + + "be queried after onAttach, when the host's ability context should always be non-null"); } - return ability; + return context; } onNewWant(want: Want, launchParams: AbilityConstant.LaunchParam): void { @@ -467,7 +463,7 @@ class FlutterAbilityAndEntryDelegate implements ExclusiveAppComponent */ interface Host extends FlutterEngineProvider, FlutterEngineConfigurator, PlatformPluginDelegate { - getAbility(): UIAbility; + getAbilityContext(): common.UIAbilityContext; shouldDispatchAppLifecycleState(): boolean; @@ -515,7 +511,7 @@ interface Host extends FlutterEngineProvider, FlutterEngineConfigurator, Platfor shouldRestoreAndSaveState(): boolean; /* Return the ExclusiveAppComponent */ - getExclusiveAppComponent(): ExclusiveAppComponent | null + getExclusiveAppComponent(): ExclusiveAppComponent | null providePlatformPlugin(flutterEngine: FlutterEngine): PlatformPlugin | undefined diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterEntry.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterEntry.ets index f6462e5cf3c649f86ae95c91c542a20f71564b3e..396211877ef9c72621dcf040856dbfc4b73bf35d 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterEntry.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterEntry.ets @@ -12,19 +12,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { Want, common } from '@kit.AbilityKit'; +import { window } from '@kit.ArkUI'; import FlutterEngine from '../engine/FlutterEngine'; import PlatformPlugin from '../../plugin/PlatformPlugin'; -import Want from '@ohos.app.ability.Want'; import FlutterShellArgs from '../engine/FlutterShellArgs'; -import UIAbility from '@ohos.app.ability.UIAbility'; import ExclusiveAppComponent from './ExclusiveAppComponent'; import { FlutterAbilityAndEntryDelegate, Host } from './FlutterAbilityAndEntryDelegate'; import FlutterAbilityLaunchConfigs from './FlutterAbilityLaunchConfigs'; import Log from '../../util/Log'; import { FlutterView } from '../../view/FlutterView'; -import FlutterManager from './FlutterManager'; -import window from '@ohos.window'; import FlutterEngineConfigurator from './FlutterEngineConfigurator'; import { FlutterPlugin } from '../engine/plugins/FlutterPlugin'; @@ -33,20 +31,18 @@ const TAG = "FlutterEntry"; export default class FlutterEntry implements Host { private static ARG_SHOULD_ATTACH_ENGINE_TO_ABILITY: string = "should_attach_engine_to_ability"; - protected uiAbility: UIAbility | null = null protected delegate: FlutterAbilityAndEntryDelegate | null = null protected flutterView: FlutterView | null = null - protected context: Context; + protected context: common.UIAbilityContext; protected windowStage: window.WindowStage | null = null private parameters: Record = {}; protected engineConfigurator: FlutterEngineConfigurator | null = null protected hasInit: boolean = false; - constructor(context: Context, params: Record = {}) { + constructor(context: common.UIAbilityContext, params: Record = {}) { this.context = context; - this.uiAbility = FlutterManager.getInstance().getUIAbility(context); this.parameters = params; - this.windowStage = FlutterManager.getInstance().getWindowStage(this.uiAbility); + this.windowStage = this.context.windowStage; this.hasInit = false; } @@ -58,7 +54,6 @@ export default class FlutterEntry implements Host { this.flutterView?.onWindowCreated(); await this?.delegate?.onAttach(this.context); Log.i(TAG, 'onAttach end'); - this?.delegate?.platformPlugin?.setUIAbilityContext(this.uiAbility!!.context); this.delegate?.onCreate(); this.delegate?.onWindowStageCreate() this.windowStage?.on('windowStageEvent', this.windowStageEventCallback); @@ -140,12 +135,11 @@ export default class FlutterEntry implements Host { } } - getAbility(): UIAbility { - return this.uiAbility!! + getAbilityContext(): common.UIAbilityContext { + return this.context; } loadContent() { - } shouldAttachEngineToAbility(): boolean { @@ -220,7 +214,7 @@ export default class FlutterEntry implements Host { return true; } - getExclusiveAppComponent(): ExclusiveAppComponent | null { + getExclusiveAppComponent(): ExclusiveAppComponent | null { return this.delegate ? this.delegate : null } diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterManager.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterManager.ets index 8cac73b0dc5fb3f1909f0a4b8e8200d1e1bc574a..0f6ee7093bdf257364b1d8293265955ed2c64c1c 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterManager.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/FlutterManager.ets @@ -12,11 +12,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - - +import { common } from '@kit.AbilityKit'; +import { window } from '@kit.ArkUI'; import { FlutterView } from '../../view/FlutterView'; -import UIAbility from '@ohos.app.ability.UIAbility'; -import window from '@ohos.window'; import Log from '../../util/Log'; const TAG = "FlutterManager" @@ -33,40 +31,8 @@ export default class FlutterManager { private flutterViewList = new Map(); private flutterViewIndex = 1; - private uiAbilityList = new Array(); - private windowStageList = new Map(); private mFullScreenListener: FullScreenListener = new DefaultFullScreenListener(); - pushUIAbility(uiAbility: UIAbility) { - this.uiAbilityList.push(uiAbility); - } - - popUIAbility(uiAbility: UIAbility) { - let index = this.uiAbilityList.findIndex((item: UIAbility) => item == uiAbility) - if (index > 0) { - this.uiAbilityList.splice(index, 1) - } - } - - pushWindowStage(uiAbility: UIAbility, windowStage: window.WindowStage) { - this.windowStageList.set(uiAbility, windowStage) - } - - popWindowStage(uiAbility: UIAbility) { - this.windowStageList.delete(uiAbility) - } - - getWindowStage(uiAbility: UIAbility): window.WindowStage { - return this.windowStageList.get(uiAbility)!! - } - - getUIAbility(context?: Context): UIAbility { - if (!context && this.uiAbilityList.length > 0) { - return this.uiAbilityList[0]; - } - return this.uiAbilityList.find((item: UIAbility) => item.context == context)!! - } - hasFlutterView(viewId: string): boolean { return this.flutterViewList.has(viewId); } @@ -91,7 +57,7 @@ export default class FlutterManager { * It's suggested to keep 'oh_flutter_' as the prefix for xcomponent_id. * Otherwise it might affect the performance. */ - createFlutterView(context: Context): FlutterView { + createFlutterView(context: common.UIAbilityContext): FlutterView { let flutterView = new FlutterView(`oh_flutter_${this.flutterViewIndex++}`, context); this.putFlutterView(flutterView.getId(), flutterView); return flutterView; @@ -136,9 +102,8 @@ export class DefaultFullScreenListener implements FullScreenListener { this.fullScreen = useFullScreen; this.skipCheck = true; - let window = FlutterManager.getInstance() - .getWindowStage(FlutterManager.getInstance().getUIAbility(getContext(this))); - window.getMainWindowSync().setWindowLayoutFullScreen(useFullScreen); + const windowStage = (getContext(this) as common.UIAbilityContext).windowStage; + windowStage.getMainWindowSync().setWindowLayoutFullScreen(useFullScreen); Log.i(TAG, "WindowLayoutFullScreen is on") } diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/PlatformPlugin.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/PlatformPlugin.ets index e9ef8faa7daa76f2e504e57f44790e45336dbc86..8cfc595ca150348e551986be88fc399c14945b41 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/PlatformPlugin.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/plugin/PlatformPlugin.ets @@ -42,7 +42,7 @@ export default class PlatformPlugin { private static TAG = "PlatformPlugin"; callback = new PlatformPluginCallback(); - constructor(platformChannel: PlatformChannel, context: common.Context, platformPluginDelegate?: PlatformPluginDelegate) { + constructor(platformChannel: PlatformChannel, context: common.UIAbilityContext, platformPluginDelegate?: PlatformPluginDelegate) { this.callback.platformChannel = platformChannel; this.callback.context = context; this.callback.applicationContext = context?.getApplicationContext(); @@ -61,8 +61,8 @@ export default class PlatformPlugin { } this.callback.lastWindow = data; }); - const uiAbility = FlutterManager.getInstance().getUIAbility(context); - const windowStage = FlutterManager.getInstance().getWindowStage(uiAbility); + + const windowStage = context.windowStage; this.callback.mainWindow = windowStage.getMainWindowSync(); } catch (err) { Log.e(PlatformPlugin.TAG, "Failed to obtain the top window. Cause: " + JSON.stringify(err)); @@ -77,10 +77,6 @@ export default class PlatformPlugin { } } - setUIAbilityContext(context: common.UIAbilityContext): void { - this.callback.uiAbilityContext = context; - } - setSystemChromeChangeListener(): void { if (this.callback.callbackId == null && this.callback.applicationContext != null) { let that = this; @@ -111,9 +107,8 @@ export class PlatformPluginCallback implements PlatformMessageHandler { lastWindow: window.Window | null = null; platformChannel: PlatformChannel | null = null; platformPluginDelegate: PlatformPluginDelegate | null = null; - context: common.Context | null = null; + context: common.UIAbilityContext | null = null; showBarOrNavigation: ('status' | 'navigation')[] = ['status', 'navigation']; - uiAbilityContext: common.UIAbilityContext | null = null; callbackId: number | null = null; applicationContext: common.ApplicationContext | null = null; currentTheme: SystemChromeStyle | null = null; @@ -168,7 +163,7 @@ export class PlatformPluginCallback implements PlatformMessageHandler { Log.d(PlatformPluginCallback.TAG, "setApplicationSwitcherDescription: " + JSON.stringify(description)); try { let label: string = description?.label; - this.uiAbilityContext?.setMissionLabel(label).then(() => { + this.context?.setMissionLabel(label).then(() => { Log.d(PlatformPluginCallback.TAG, "Succeeded in seting mission label"); }) } catch (err) { @@ -206,7 +201,7 @@ export class PlatformPluginCallback implements PlatformMessageHandler { getClipboardData(result: MethodResult): void { let atManager = abilityAccessCtrl.createAtManager(); - atManager.requestPermissionsFromUser(this.uiAbilityContext, ['ohos.permission.READ_PASTEBOARD']).then((data) => { + atManager.requestPermissionsFromUser(this.context, ['ohos.permission.READ_PASTEBOARD']).then((data) => { // https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-permissionrequestresult-V5 // 相应请求权限的结果: // -1:未授权,表示权限已设置,无需弹窗,需要用户在"设置"中修改 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 03bdbc5b0845e3347894977acf72f17f61b2a3ef..5361caa6dcbd84573ea90671f66d41588d1f2d90 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 @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { common } from '@kit.AbilityKit'; import FlutterEngine from '../embedding/engine/FlutterEngine'; import Log from '../util/Log'; import { DVModel, DVModelChildren, DVModelEvents, DVModelParameters } from './DynamicView/dynamicView'; @@ -92,17 +93,16 @@ export class FlutterView { private checkKeyboard: boolean = true; private checkGesture: boolean = true; - constructor(viewId: string, context: Context) { + constructor(viewId: string, context: common.UIAbilityContext) { this.id = viewId this.displayInfo = display.getDefaultDisplaySync(); + this.viewportMetrics.devicePixelRatio = this.displayInfo?.densityPixels; this.viewportMetrics.physicalTouchSlop = 1.0 * this.displayInfo?.densityPixels; - this.mainWindow = FlutterManager.getInstance() - .getWindowStage(FlutterManager.getInstance().getUIAbility(context)) - .getMainWindowSync(); this.mFirstFrameListeners = new ArrayList(); + this.mainWindow = context.windowStage.getMainWindowSync(); this.mainWindow?.on('windowSizeChange', this.windowSizeChangeCallback); this.mainWindow?.on('avoidAreaChange', this.avoidAreaChangeCallback); this.mainWindow?.on('windowStatusChange', this.windowStatusChangeCallback);