Я столкнулся с постоянной проблемой со строкой состояния в моем приложении React Native, использующем Expo. Строка состояния отображается правильно во время разработки и при первой установке приложения, но становится белой с нечитаемым содержимым после закрытия и повторного открытия APK. Проблема:
import { NavigationContainer } from "@react-navigation/native";
import { StatusBar } from "expo-status-bar";
import { AppState, Platform, useRef, useEffect } from "react-native";
import { SafeAreaProvider } from "react-native-safe-area-context";
import RootNavigator from "./src/navigation/RootNavigator";
import { ThemeProvider, useTheme } from "./src/shared/contexts/ThemeContext";
const ThemedStatusBar = () => {
const { isDarkMode, theme } = useTheme();
const appState = useRef(AppState.currentState);
useEffect(() => {
const subscription = AppState.addEventListener('change', nextAppState => {
if (appState.current.match(/inactive|background/) && nextAppState === 'active') {
if (Platform.OS === 'android') {
setTimeout(() => {
// Attempt to force status bar update
}, 100);
}
}
appState.current = nextAppState;
});
return () => subscription.remove();
}, [isDarkMode, theme]);
return (
);
};
function Main() {
return (
);
}
export default function App() {
return (
);
}
В чем мне нужна помощь:
Каков правильный подход, чтобы обеспечить правильное сохранение стиля строки состояния при повторном открытии приложения из выключенного состояния? Контекст темы доступен и работает, но строка состояния не инициализируется должным образом при холодном запуске.
Я столкнулся с постоянной проблемой со строкой состояния в моем приложении React Native, использующем Expo. Строка состояния отображается правильно во время разработки и при первой установке приложения, но становится белой с нечитаемым содержимым после закрытия и повторного открытия APK. [b]Проблема:[/b] [list] [*] ✅ В разработке работает нормально ([code]npx expo run:android[/code])
[*] ✅ Работает при первом запуске APK после установки.
[*]❌ [b]Сбой[/b] после закрытия приложения и повторного открытия — строка состояния становится полностью белой
[*] ✅ Изменение темы вручную позволяет временно исправить ситуацию
[/list] [b]Что я пробовал:[/b] [list] [*]Использование expo-status-bar со стилем и реквизитами backgroundColor
[*]Реализация прослушивателя AppState для определения состояния переднего плана приложения
[*]Добавление таймаутов для принудительного обновления строки состояния
[*]Контекст темы работает правильно (доказано ручным исправлением темы)
Вот моя текущая реализация App.tsx: [code]import { NavigationContainer } from "@react-navigation/native"; import { StatusBar } from "expo-status-bar"; import { AppState, Platform, useRef, useEffect } from "react-native"; import { SafeAreaProvider } from "react-native-safe-area-context"; import RootNavigator from "./src/navigation/RootNavigator"; import { ThemeProvider, useTheme } from "./src/shared/contexts/ThemeContext";
Каков правильный подход, чтобы обеспечить правильное сохранение стиля строки состояния при повторном открытии приложения из выключенного состояния? Контекст темы доступен и работает, но строка состояния не инициализируется должным образом при холодном запуске.