React Native - Expo - 如何检查是不是启用了暗模式?

Posted

技术标签:

【中文标题】React Native - Expo - 如何检查是不是启用了暗模式?【英文标题】:React Native - Expo - How to check if Dark mode is enabled?React Native - Expo - 如何检查是否启用了暗模式? 【发布时间】:2021-11-06 08:57:36 【问题描述】:

我已阅读 Expo/RN 文档,为了获得系统颜色(暗/亮),我们应该使用来自 react native 的this API。

所以,我决定创建我的自定义钩子

import  Appearance  from "react-native";

export default function useIsDarkModeEnabled() 
  return Appearance.getColorScheme() === "dark";

但由于某种原因,它总是让我返回错误。我正在 ios 14 上进行测试,并启用了深色主题。

有什么想法吗?

【问题讨论】:

【参考方案1】:

每当我检查设备的当前外观时,我都会使用 useColorScheme() 函数,而不是 getColorScheme()。

您可以使用 Context 将其保留在整个应用程序中,或者将其放在应用程序的根目录中,并将其作为道具传递给您的组件(不是最好的)。要持久化主题,您可以使用 AsyncStorage 来存储外观的最后状态。

然后,每当应用程序打开时,它都会拉出最后一个状态,除非设备从那时起改变了外观。

【讨论】:

以上是关于React Native - Expo - 如何检查是不是启用了暗模式?的主要内容,如果未能解决你的问题,请参考以下文章

不使用 react-native 的 Expo 分支

如何使用搜索文本输入(expo、react-native)在屏幕上显示项目

如何在 expo/react-native 应用程序中添加自定义节点模块?

React Native - Expo - 如何检查是不是启用了暗模式?

React Native:如何使用 expo 在 webview 中制作全屏 youtube 嵌入视频(没有 react-native 链接)

如何将 expo react-native 自定义字体应用于整个容器