React Native 暗黑模式适配方案

本文详细介绍了React Native环境下针对暗黑模式的适配方案,包括从Native端获取当前theme值、监听theme变化、在0.62版本前后的不同调用方式,以及颜色和图片的适配策略。特别地,文章提出了DynamicStyleSheet解决样式实时更新问题,以实现在系统主题变化时,React Native应用能够无缝切换暗黑模式。
摘要由CSDN通过智能技术生成

Android设备在 10 之后提供了对于暗黑模式的支持, iOS也在 iOS13之后提供了同样的支持。React Native 在 0.62 版本中增加了对于暗黑模式功能的支持,用来提升App用户体验。暗黑模式在 0.62 之前及 0.62+的版本如何适配呢?本文就来详细说明在RN环境下暗黑模式的适配实践方案。

暗黑模式是基于Native端实现。如何在RN端进行功能实施呢?核心实现是:通过直接获取和动态监听两种方式获取 Native 端的主题变化即可。

1)从 Native 端获取当前的 theme 值

使用 Native Modules 的同步方法在 JS 端获取当前 theme 值,JS 端方法调用能直接得到 Native 同步方法的返回值,而非一个 Promise。

iOS: 使用 RCTEXPORTSYNCHRONOUSTYPEDMETHOD() 替换 RCTEXPORTMETHOD()(v0.51.0 及以上版本支持Commit)

Android: 在 @ReactMethod annotation 后面添加 (isBlockingSynchronousMethod = true) (v0.42.0 及以上版本支持Commit)

同步方法的缺点是无法在 Debug Remotely 时调用,所以必须在 Debug Remotely 时,提供默认值。


2)theme 值变化监听

RN事件监听Theme变化可以使用系统提供的EventEm

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Songlcy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值