diff --git a/src/platforms/app-plus/service/api/device/system.js b/src/platforms/app-plus/service/api/device/system.js index 73b7ac59cefdaf0122e06f7d23272c9c0aa39da6..fc502f7107db3bbf9d38c3ef3186997edc21dec5 100644 --- a/src/platforms/app-plus/service/api/device/system.js +++ b/src/platforms/app-plus/service/api/device/system.js @@ -48,7 +48,7 @@ export function getAppBaseInfo () { hostPackageName, hostName, osLanguage, hostVersion, hostLanguage, hostTheme, appId, appName, appVersion, appVersionCode, - appWgtVersion, osTheme + appWgtVersion } = systemInfo const appLanguage = uni @@ -74,7 +74,7 @@ export function getAppBaseInfo () { hostFontSizeSetting: undefined, language: osLanguage, SDKVersion: '', - theme: hostTheme || osTheme, + theme: plus.navigator.getUIStyle(), version: plus.runtime.innerVersion } } diff --git a/src/platforms/app-plus/service/framework/app.js b/src/platforms/app-plus/service/framework/app.js index dbe0fdb6f7ab8b2d69ec0318917b62e687cf47bb..0e3c75795ffea5cb4a673638d8235aa7c6719b70 100644 --- a/src/platforms/app-plus/service/framework/app.js +++ b/src/platforms/app-plus/service/framework/app.js @@ -52,6 +52,8 @@ import { parseRedirectInfo } from './utils' +import { changePagesNavigatorStyle } from './theme' + let appCtx const defaultApp = { @@ -131,6 +133,7 @@ function initGlobalListeners () { publish('onUIStyleChange', { style: event.uistyle }) + changePagesNavigatorStyle() }) globalEvent.addEventListener('uniMPNativeEvent', function (event) { @@ -263,4 +266,4 @@ export function registerApp (appVm, Vue) { __uniConfig.ready = true process.env.NODE_ENV !== 'production' && perf('registerApp') -} +} diff --git a/src/platforms/app-plus/service/framework/theme.js b/src/platforms/app-plus/service/framework/theme.js index 9214d3fbc14fe2bdee9b927fb1bf21da760cbe23..c727c3507b10d72872d1e02bafb09fe55485c325 100644 --- a/src/platforms/app-plus/service/framework/theme.js +++ b/src/platforms/app-plus/service/framework/theme.js @@ -1,5 +1,7 @@ import { normallizeStyles } from 'uni-shared' import { weexGetSystemInfoSync } from '../api/device/system' +import { setStatusBarStyle } from '../bridge' +import { getCurrentPages } from './page' const ON_THEME_CHANGE = 'api.onThemeChange' @@ -11,13 +13,28 @@ function offThemeChange (callback = () => { }) { UniServiceJSBridge.off(ON_THEME_CHANGE, callback) } +function getNavigatorStyle () { + return plus.navigator.getUIStyle() === 'dark' ? 'light' : 'dark' +} + +export function changePagesNavigatorStyle () { + const theme = getNavigatorStyle() + + setStatusBarStyle(theme) + + const pages = getCurrentPages(true) + pages.forEach((page) => { + page.$page.meta.statusBarStyle = theme + }) +} + export function parseTheme (pageStyle) { let parsedStyle = {} if (__uniConfig.darkmode) { - let theme = 'light' + let theme = plus.navigator.getUIStyle() const systemInfo = weexGetSystemInfoSync() - if (systemInfo) { - theme = systemInfo.hostTheme || systemInfo.osTheme + if (systemInfo && systemInfo.hostTheme) { + theme = systemInfo.hostTheme } parsedStyle = normallizeStyles(pageStyle, __uniConfig.themeConfig, theme) } diff --git a/src/platforms/app-plus/service/framework/webview/parser/webview-style-parser.js b/src/platforms/app-plus/service/framework/webview/parser/webview-style-parser.js index 34d86c536f63ca986909b27a2730e2ccc1eb8ae4..0129a5355b72105600fa920f8128913d03481815 100644 --- a/src/platforms/app-plus/service/framework/webview/parser/webview-style-parser.js +++ b/src/platforms/app-plus/service/framework/webview/parser/webview-style-parser.js @@ -106,5 +106,6 @@ export function parseWebviewStyle (id, path, _routeOptions = {}) { } } + _routeOptions.meta = routeOptions.meta return webviewStyle }