【发布时间】:2020-12-07 20:10:04
【问题描述】:
我正在编写我的第一个 react-native 应用程序,并且想像 GMail 一样切换主题。
确实,当我们在手机设置中更改主题模式或在夜间设置自动深色主题时,GMail 的颜色会变深。
所以我尝试按照doc 中的说明实现Appearance.addChangeListener,但不幸的是该功能不起作用。
我正在尝试使用 Android 10。
我如何在不重新启动应用程序的情况下在手机主题更改时更新应用程序的颜色?
useEffect(() => {
dispatch(changeTheme(Appearance.getColorScheme()));
Appearance.addChangeListener(onThemeChange);
return () => Appearance.removeChangeListener(onThemeChange);
}, []);
// This function is never call
const onThemeChange = ({ colorScheme }) => {
console.log("onThemeChange", colorScheme)
dispatch(changeTheme(colorScheme));
}
【问题讨论】:
-
我对原生反应也很陌生。传递给 addChangeListener 的函数不应该在 useEffect 块内声明吗?
标签: react-native themes react-native-android android-dark-theme