如何在Jetpack Compose预览中传入注入的timeZoneId参数
解决方案
在预览函数中,你需要传入ZoneId的实例而非ZoneId类本身,因为Composable要求的是具体的ZoneId对象。由于预览环境没有依赖注入的上下文,手动传入一个合法的ZoneId即可,有两种常见方式:
- 使用系统默认时区(模拟真实设备场景):
@Preview @Composable fun EditDepartureTimePreview() { OhmeM3Theme() { EditDepTime( timeZoneId = ZoneId.systemDefault(), onCancelEditDepTime = {} ) } }
- 指定固定时区(保证预览效果一致性):
@Preview @Composable fun EditDepartureTimePreview() { OhmeM3Theme() { EditDepTime( timeZoneId = ZoneId.of("Asia/Shanghai"), onCancelEditDepTime = {} ) } }
补充说明
ZoneId.systemDefault()会自动获取当前设备的默认时区,适合还原真实使用场景的预览效果。- 如果需要固定预览的时区展示,直接通过
ZoneId.of("标准时区ID")指定,比如"UTC"、"Europe/London"这类符合规范的时区ID都可以使用。
内容的提问来源于stack exchange,提问作者BRDroid
相关产品推荐
相关产品推荐

