[Mobile] Barre d'état Android blanche, ignore le thème clair/sombre système #104
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Résumé
Dans l'app Android, la bande de la barre d'état système est fixée à une couleur claire et le tint des icônes ne suit jamais le réglage clair/sombre du téléphone — en mode sombre système la zone paraît « cassée » (bande claire au-dessus d'une UI sombre).
Contexte (trouvé en auditant le code, pas supposé)
@capacitor/status-barn'est pas installé (apps/web/package.jsonn'a que@capacitor/android|app|core|preferences|cli). Aucun appelStatusBar.setStyle/setBackgroundColor/setOverlaysWebViewnulle part.apps/web/capacitor.config.tsn'a aucun blocplugins.apps/web/android/app/src/main/res/values/styles.xml:AppTheme.NoActionBar(parentTheme.AppCompat.DayNight.NoActionBar) code en dur<item name="android:statusBarColor">@color/colorPrimaryDark</item>et<item name="android:windowLightStatusBar">false</item>; idemAppTheme.NoActionBarLaunch.res/values-night/:@color/colorPrimaryDark(#244F38) et@color/colorBackground(#EEF2ED) résolvent aux mêmes valeurs claires en mode sombre.windowLightStatusBar=falseest figé → icônes jamais en sombre-sur-clair.apps/web/android/app/src/main/java/fr/kyuno/batchcooking/MainActivity.javaest vide (extends BridgeActivity {}).AndroidManifest.xmlaconfigChanges="…|uiMode|…"— un basculement clair/sombre système ne recrée pas l'Activity.apps/web/index.html: pas de<meta name="theme-color">, viewport sansviewport-fit=cover.apps/web/src/features/theme/ThemeContext.tsxapplyTheme()— mais il est auth-gated (valeur viaapiClient.getPreferences()), et un visiteur non connecté est en"SYSTEM"par défaut. Pas de listenermatchMedia("(prefers-color-scheme…)")(le mode sombre est sinon 100 % CSS via_theme.scss).Contenu attendu
Le fond de la barre d'état et le tint de ses icônes suivent le thème effectif de l'app (lequel suit l'OS quand la préférence app =
SYSTEM).Piste recommandée (à confirmer en implémentation) :
@capacitor/status-bar+cap sync.main.tsx/bootstrap()ou dansThemeContextune fois le thème résolu) :StatusBar.setStyle({ style })+setBackgroundColor({ color })depuis les tokens--color-*du thème résolu ; ré-appliquer au changement de thème et surAppappStateChange(couvre le switch OS live queuiModeempêche de recréer l'Activity).res/values-night/colors.xml(au moinscolorPrimaryDark,colorBackground) pour la fenêtre pré-WebView + le splash ; retirer lewindowLightStatusBar=falsefigé.<meta name="theme-color" media="(prefers-color-scheme: …)">dansindex.htmlpour cohérence navigateur.Alternative pure-native (sans JS) :
WindowInsetsControllerCompat+onConfigurationChangeddansMainActivity.java+values-night/.Gros ticket — peut être découpé (natif XML / plugin+JS / meta web) si besoin.
Dépendances
S'appuie sur
ThemeContext(features/theme/) pour la source clair/sombre côté JS.