From 9f2c9402d6830eff1566d103746ce08f98f9058e Mon Sep 17 00:00:00 2001 From: zjxi Date: Wed, 7 Aug 2024 22:17:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=A7=A3=E5=86=B3settingschannel=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E5=AE=9E=E6=97=B6=E6=9B=B4=E6=96=B0=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E4=B8=BB=E9=A2=98=E6=A0=B7=E5=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flutter_embedding/build-profile.json5 | 16 +++++++++++- .../engine/systemchannels/SettingsChannel.ets | 3 ++- .../ets/embedding/ohos/FlutterAbility.ets | 19 +++++++++++--- .../src/main/ets/embedding/ohos/Settings.ets | 25 +++++++++++++------ 4 files changed, 50 insertions(+), 13 deletions(-) diff --git a/shell/platform/ohos/flutter_embedding/build-profile.json5 b/shell/platform/ohos/flutter_embedding/build-profile.json5 index 4cebb96991..1b20833dc9 100755 --- a/shell/platform/ohos/flutter_embedding/build-profile.json5 +++ b/shell/platform/ohos/flutter_embedding/build-profile.json5 @@ -15,7 +15,21 @@ { "app": { - "signingConfigs": [], + "signingConfigs": [ + { + "name": "default", + "type": "HarmonyOS", + "material": { + "certpath": "C:\\Users\\Lenovo\\.ohos\\config\\default_flutter_embedding_p0O9TETzADHWYDdHzCHvk0j0VZtvELp9efBkMnDAgw4=.cer", + "storePassword": "000000186D3C53D9596BCEA85CC838E3A67BF553502AE87E866E6B96FBEEB4082727584F07FD63BB", + "keyAlias": "debugKey", + "keyPassword": "000000186E4C61E716C0B371F0B05CDBF36FFA52F49E639C21713DD9CFC4A63C8279537E802831D0", + "profile": "C:\\Users\\Lenovo\\.ohos\\config\\default_flutter_embedding_p0O9TETzADHWYDdHzCHvk0j0VZtvELp9efBkMnDAgw4=.p7b", + "signAlg": "SHA256withECDSA", + "storeFile": "C:\\Users\\Lenovo\\.ohos\\config\\default_flutter_embedding_p0O9TETzADHWYDdHzCHvk0j0VZtvELp9efBkMnDAgw4=.p12" + } + } + ], "products": [ { "name": "default", diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/systemchannels/SettingsChannel.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/systemchannels/SettingsChannel.ets index dcb7e2fd91..91d286405f 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/systemchannels/SettingsChannel.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/engine/systemchannels/SettingsChannel.ets @@ -76,7 +76,7 @@ class MessageBuilder { } send(): void { - Log.i(TAG, "Sending message: \n" + Log.i(TAG, "Sending message: " + TEXT_SCALE_FACTOR + " : " + this.settingsMessage.getTextScaleFactor() + ", " + NATIVE_SPELL_CHECK_SERVICE_DEFINED + " : " @@ -87,6 +87,7 @@ class MessageBuilder { + this.settingsMessage.getAlwaysUse24HourFormat() + ", " + PLATFORM_BRIGHTNESS + " : " + this.settingsMessage.getPlatformBrightness()); + this.channel.send(this.settingsMessage) } } 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 37e532808d..e06cd373a3 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 @@ -28,18 +28,18 @@ 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 List from '@ohos.util.List'; 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'; +import {Configuration} from '@kit.AbilityKit'; const TAG = "FlutterAbility"; const EVENT_BACK_PRESS = 'EVENT_BACK_PRESS'; +let callbackId: number; // debug /** * flutter ohos基础ability,请在让主ability继承自该类。 @@ -69,6 +69,9 @@ export class FlutterAbility extends UIAbility implements Host { * 4. setContentView() noNeed */ async onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + // 冷启动通过上下文信息获取当前系统文字大小 + AppStorage.setOrCreate('fontSizeScale', this.context.config.fontSizeScale); + Log.i(TAG, "bundleCodeDir=" + this.context.bundleCodeDir); FlutterManager.getInstance().pushUIAbility(this) @@ -366,10 +369,15 @@ export class FlutterAbility extends UIAbility implements Host { onConfigurationUpdated(config: Configuration){ Log.i(TAG, 'onConfigurationUpdated config:' + JSON.stringify(config)); + this?.delegate?.flutterEngine?.getSettingsChannel()?.startMessage() + .setNativeSpellCheckServiceDefined(false) + .setBrieflyShowPassword(false) .setAlwaysUse24HourFormat(I18n.System.is24HourClock()) + .setTextScaleFactor(config.fontSizeScale == undefined? 1.0 : config.fontSizeScale) .setPlatformBrightness(config.colorMode != ConfigurationConstant.ColorMode.COLOR_MODE_DARK - ? PlatformBrightness.LIGHT : PlatformBrightness.DARK); + ? PlatformBrightness.LIGHT : PlatformBrightness.DARK) + .send(); // 热启动生命周期内,监听系统设置改变并发送相应信息 if (config.language != '') { this.getFlutterEngine()?.getLocalizationPlugin()?.sendLocaleToFlutter(); @@ -379,4 +387,7 @@ export class FlutterAbility extends UIAbility implements Host { getFlutterEngine(): FlutterEngine | null { return this.delegate?.flutterEngine || null; } -} \ No newline at end of file + + + +} diff --git a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/Settings.ets b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/Settings.ets index f90df8cf28..46d087bf6a 100644 --- a/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/Settings.ets +++ b/shell/platform/ohos/flutter_embedding/flutter/src/main/ets/embedding/ohos/Settings.ets @@ -17,11 +17,13 @@ import SettingsChannel, { PlatformBrightness } from '../engine/systemchannels/Se import I18n from '@ohos.i18n' import Log from '../../util/Log'; import { MediaQuery } from '@ohos.arkui.UIContext'; - +import FlutterEngine from '../engine/FlutterEngine' const TAG = "Settings"; + export default class Settings { settingsChannel: SettingsChannel | null; + flutterEngine: FlutterEngine | undefined; constructor(settingsChannel: SettingsChannel | null) { this.settingsChannel = settingsChannel; @@ -30,22 +32,31 @@ export default class Settings { sendSettings(mediaQuery: MediaQuery): void { this.settingsChannel?.startMessage() .setAlwaysUse24HourFormat(I18n.System.is24HourClock()) - .setTextScaleFactor(1.0) + .setTextScaleFactor(this.getTextScaleFactor()) .setNativeSpellCheckServiceDefined(false) .setBrieflyShowPassword(false) - .setPlatformBrightness(this.getDarkMode(mediaQuery)) + .setPlatformBrightness(this.getThemeMode(mediaQuery)) .send(); } - getDarkMode(mediaQuery: MediaQuery): PlatformBrightness { - + getThemeMode(mediaQuery: MediaQuery): PlatformBrightness { let listener = mediaQuery.matchMediaSync('(dark-mode: true)'); if (listener.matches) { - Log.i(TAG,"return dark"); + Log.i(TAG, "return themeMode.dark"); return PlatformBrightness.DARK; } else { - Log.i(TAG,"return light"); + Log.i(TAG, "return themeMode.light"); return PlatformBrightness.LIGHT; } } + + getTextScaleFactor(): number { // 传递从冷启动获取的当前系统设置字体大小 + let sysTextScaleFactor = AppStorage.get('fontSizeScale'); + if (sysTextScaleFactor == undefined) { + sysTextScaleFactor = 1.0; + Log.e(TAG, "get the textScaleFactor error, it will be assigned to " + sysTextScaleFactor) + } + Log.i(TAG, "return textScaleFactor = " + JSON.stringify(sysTextScaleFactor)); + return sysTextScaleFactor; + } } \ No newline at end of file -- Gitee