我们正在开发适用于 Android 和 iOS 的 Ionic-Vue 应用程序。在 Chrome 开发工具中,该应用程序的行为符合预期:默认情况下禁用暗模式,并在切换到“prefers-color-scheme:dark”时启用。然而,在真正的安卓设备上测试应用程序时,即使用户没有在暗模式下运行设备,有时也会启用暗模式。
这是我们的 package.json:
"dependencies": {
"@angular/core": "^12.2.0",
"@capacitor/android": "^3.0.0-rc.4",
"@capacitor/app": "1.0.2",
"@capacitor/core": "^3.0.0-rc.4",
"@capacitor/device": "^1.0.2",
"@capacitor/haptics": "1.0.2",
"@capacitor/ios": "^3.3.3",
"@capacitor/keyboard": "1.0.2",
"@capacitor/push-notifications": "^1.0.3",
"@capacitor/status-bar": "1.0.2",
"@ionic-native/core": "^5.35.0",
"@ionic-native/fingerprint-aio": "^5.36.0",
"@ionic-native/globalization": "^5.36.0",
"@ionic-native/in-app-browser": "^5.35.0",
"@ionic/cli": "^6.18.1",
"@ionic/vue": "6",
"@ionic/vue-router": "6",
"@types/npm": "^7.19.0",
"apexcharts": "^3.27.3",
"axios": "^0.21.1",
"cordova-plugin-fingerprint-aio": "^4.0.2",
"cordova-plugin-globalization": "^1.11.0",
"cordova-plugin-inappbrowser": "^5.0.0",
"core-js": "^3.6.5",
"moment": "^2.29.1",
"node-sass": "^6.0.1",
"path": "^0.12.7",
"vue": "^3.2.31",
"vue-i18n": "^9.1.7",
"vue-router": "^4.0.12",
"vue3-apexcharts": "^1.4.0",
"vuex": "^4.0.0-rc.2",
"webpack": "^4.46.0",
"webpack-dev-server": "^3.11.2"},
"devDependencies": {
"@capacitor/cli": "3.1.2",
"@types/jest": "^24.0.19",
"@vue/cli-plugin-babel": "~5.0.0-rc.3",
"@vue/cli-plugin-e2e-cypress": "~5.0.0-rc.3",
"@vue/cli-plugin-router": "~5.0.0-rc.3",
"@vue/cli-plugin-typescript": "~5.0.0-rc.3",
"@vue/cli-plugin-unit-jest": "~5.0.0-rc.3",
"@vue/cli-service": "~5.0.0-rc.3",
"@vue/compiler-sfc": "^3.0.0-0",
"@vue/test-utils": "^2.0.0-0",
"cypress": "^8.3.0",
"jest": "^27.1.0",
"sass": "^1.35.2",
"sass-loader": "^10.2.0",
"ts-jest": "^27.0.4",
"typescript": "~4.1.5",
"vue-jest": "^5.0.0-0"
}
这是我们配置颜色主题的 variables.css:
:root {
--ion-color-primary: #0d6efd;
--ion-color-primary-rgb: 13,110,253;
--ion-color-primary-contrast: #ffffff;
--ion-color-primary-contrast-rgb: 255,255,255;
--ion-color-primary-shade: #0b61df;
--ion-color-primary-tint: #257dfd;
--ion-color-secondary: #cfe2ff;
--ion-color-secondary-rgb: 207,226,255;
--ion-color-secondary-contrast: #000000;
--ion-color-secondary-contrast-rgb: 0,0,0;
--ion-color-secondary-shade: #b6c7e0;
--ion-color-secondary-tint: #d4e5ff;
--ion-color-tertiary: #6610f2;
--ion-color-tertiary-rgb: 102,16,242;
--ion-color-tertiary-contrast: #ffffff;
--ion-color-tertiary-contrast-rgb: 255,255,255;
--ion-color-tertiary-shade: #5a0ed5;
--ion-color-tertiary-tint: #7528f3;
--ion-color-success: #198754;
--ion-color-success-rgb: 25,135,84;
--ion-color-success-contrast: #ffffff;
--ion-color-success-contrast-rgb: 255,255,255;
--ion-color-success-shade: #16774a;
--ion-color-success-tint: #309365;
--ion-color-warning: #ffc107;
--ion-color-warning-rgb: 255,193,7;
--ion-color-warning-contrast: #000000;
--ion-color-warning-contrast-rgb: 0,0,0;
--ion-color-warning-shade: #e0aa06;
--ion-color-warning-tint: #ffc720;
--ion-color-danger: #dc3545;
--ion-color-danger-rgb: 220,53,69;
--ion-color-danger-contrast: #ffffff;
--ion-color-danger-contrast-rgb: 255,255,255;
--ion-color-danger-shade: #c22f3d;
--ion-color-danger-tint: #e04958;
--ion-color-medium: #92949c;
--ion-color-medium-rgb: 146,148,156;
--ion-color-medium-contrast: #000000;
--ion-color-medium-contrast-rgb: 0,0,0;
--ion-color-medium-shade: #808289;
--ion-color-medium-tint: #9d9fa6;
--ion-color-light: #f4f5f8;
--ion-color-light-rgb: 244,245,248;
--ion-color-light-contrast: #000000;
--ion-color-light-contrast-rgb: 0,0,0;
--ion-color-light-shade: #d7d8da;
--ion-color-light-tint: #f5f6f9;
}
ion-toolbar {
--color: var(--ion-color-primary);
}
ion-list-header{
--color: var(--ion-color-primary);
}
ion-fab-button {
--color: var(--ion-color-primary);
--background: var(--ion-color-primary-contrast);
--background-activated: : var(--ion-color-secondary);
}
ion-item-divider{
--background: var(--ion-color-light-tint);
--color: var(--ion-color-light-contrast);
}
@media (prefers-color-scheme: dark) {
/*
* Dark Colors
* -------------------------------------------
*/
/** Ionic CSS Variables **/
:root {
--ion-color-primary: #084298;
--ion-color-primary-rgb: 66,140,255;
--ion-color-primary-contrast: #ffffff;
--ion-color-primary-contrast-rgb: 255,255,255;
--ion-color-primary-shade: #3a7be0;
--ion-color-primary-tint: #5598ff;
--ion-color-secondary: #084298;
--ion-color-secondary-rgb: 66,140,255;
--ion-color-secondary-contrast: #ffffff;
--ion-color-secondary-contrast-rgb: 255,255,255;
--ion-color-secondary-shade: #3a7be0;
--ion-color-secondary-tint: #5598ff;
--ion-color-tertiary: #6a64ff;
--ion-color-tertiary-rgb: 106,100,255;
--ion-color-tertiary-contrast: #ffffff;
--ion-color-tertiary-contrast-rgb: 255,255,255;
--ion-color-tertiary-shade: #5d58e0;
--ion-color-tertiary-tint: #7974ff;
--ion-color-success: #198754;
--ion-color-success-rgb: 25,135,84;
--ion-color-success-contrast: #ffffff;
--ion-color-success-contrast-rgb: 255,255,255;
--ion-color-success-shade: #16774a;
--ion-color-success-tint: #309365;
--ion-color-warning: #ffc107;
--ion-color-warning-rgb: 255,193,7;
--ion-color-warning-contrast: #000000;
--ion-color-warning-contrast-rgb: 0,0,0;
--ion-color-warning-shade: #e0aa06;
--ion-color-warning-tint: #ffc720;
--ion-color-danger: #dc3545;
--ion-color-danger-rgb: 220,53,69;
--ion-color-danger-contrast: #ffffff;
--ion-color-danger-contrast-rgb: 255,255,255;
--ion-color-danger-shade: #c22f3d;
--ion-color-danger-tint: #e04958;
--ion-color-dark: #f4f5f8;
--ion-color-dark-rgb: 244,245,248;
--ion-color-dark-contrast: #000000;
--ion-color-dark-contrast-rgb: 0,0,0;
--ion-color-dark-shade: #d7d8da;
--ion-color-dark-tint: #f5f6f9;
--ion-color-medium: #989aa2;
--ion-color-medium-rgb: 152,154,162;
--ion-color-medium-contrast: #000000;
--ion-color-medium-contrast-rgb: 0,0,0;
--ion-color-medium-shade: #86888f;
--ion-color-medium-tint: #a2a4ab;
--ion-color-light: #222428;
--ion-color-light-rgb: 34,36,40;
--ion-color-light-contrast: #ffffff;
--ion-color-light-contrast-rgb: 255,255,255;
--ion-color-light-shade: #1e2023;
--ion-color-light-tint: #383a3e;
}
ion-toolbar {
--background: var(--ion-color-primary);
--color: var(--ion-color-primary-contrast);
}
ion-list-header{
--background: var(--ion-color-dark-contrast);
--color: var(--ion-color-primary-contrast);
}
ion-fab-button {
--background: var(--ion-color-primary);
--color: var(--ion-color-primary-contrast);
}
/*
* iOS Dark Theme
* -------------------------------------------
*/
.ios body {
--ion-background-color: #000000;
--ion-background-color-rgb: 0,0,0;
--ion-text-color: #ffffff;
--ion-text-color-rgb: 255,255,255;
--ion-color-step-50: #0d0d0d;
--ion-color-step-100: #1a1a1a;
--ion-color-step-150: #262626;
--ion-color-step-200: #333333;
--ion-color-step-250: #404040;
--ion-color-step-300: #4d4d4d;
--ion-color-step-350: #595959;
--ion-color-step-400: #666666;
--ion-color-step-450: #737373;
--ion-color-step-500: #808080;
--ion-color-step-550: #8c8c8c;
--ion-color-step-600: #999999;
--ion-color-step-650: #a6a6a6;
--ion-color-step-700: #b3b3b3;
--ion-color-step-750: #bfbfbf;
--ion-color-step-800: #cccccc;
--ion-color-step-850: #d9d9d9;
--ion-color-step-900: #e6e6e6;
--ion-color-step-950: #f2f2f2;
--ion-toolbar-background: #0d0d0d;
--ion-item-background: #1c1c1c;
--ion-item-background-activated: #313131;
}
/*
* Material Design Dark Theme
* -------------------------------------------
*/
.md body {
--ion-background-color: #121212;
--ion-background-color-rgb: 18,18,18;
--ion-text-color: #ffffff;
--ion-text-color-rgb: 255,255,255;
--ion-border-color: #222222;
--ion-color-step-50: #1e1e1e;
--ion-color-step-100: #2a2a2a;
--ion-color-step-150: #363636;
--ion-color-step-200: #414141;
--ion-color-step-250: #4d4d4d;
--ion-color-step-300: #595959;
--ion-color-step-350: #656565;
--ion-color-step-400: #717171;
--ion-color-step-450: #7d7d7d;
--ion-color-step-500: #898989;
--ion-color-step-550: #949494;
--ion-color-step-600: #a0a0a0;
--ion-color-step-650: #acacac;
--ion-color-step-700: #b8b8b8;
--ion-color-step-750: #c4c4c4;
--ion-color-step-800: #d0d0d0;
--ion-color-step-850: #dbdbdb;
--ion-color-step-900: #e7e7e7;
--ion-color-step-950: #f3f3f3;
--ion-item-background: #1A1B1E;
}
ion-title.title-large {
--color: white;
}
}
该错误不会(似乎)发生在 iOS 中,并且在迁移到 Ionic 6 之前也没有(似乎)发生。我们没有覆盖任何 android 特定配置。任何帮助表示赞赏。