Accompanist systemUiController darkIcons 在 Android 11 上不起作用

Tib*_*aru 5 android android-statusbar android-jetpack-compose jetpack-compose-accompanist

我正在使用 Accompanist systemUiController 库,并且我正在设置 darkIcons=false

虽然在浅色主题中,但效果不适用于 Android 11 的设备。例如,它似乎适用于 Android 10 的设备。

这是我尝试设置颜色的代码。

 val systemUiController = rememberSystemUiController()
 systemUiController.setStatusBarColor(color=statusBarColor,darkIcons=false) 
Run Code Online (Sandbox Code Playgroud)

其中statusBarColor较深的颜色代表我想要白色前景/图标的原因

在黑暗主题中,它可以设置 darkIconstruefalse,并且效果会相应地应用

这是 LightTheme 上的状态栏,带有darkIcons=falsedarkIcons=true

这是 DarkTheme 上的状态栏darkIcons=false 在此输入图像描述

这是 DarkTheme 上的状态栏darkIcons=true 在此输入图像描述

这是我的全部供参考Theme.kt

private val LightBase = ASBTheme(
    material = lightColors(
        background = FigmaPrimaryWhite,
        onBackground = FigmaTextBlack,
        surface = FigmaPrimaryWhite,
        onSurface = FigmaTextBlack,
        primary = FigmaSecondaryAvastBlue,
        error = FigmaStatusPink,
    ),
    textColorLabel = FigmaSecondaryAvastPurple,
    colorAccent = FigmaPrimaryGreen,
    ... //bunch of custom colors
)

private val DarkBase = ASBTheme(
    material = darkColors(
        background = FigmaPrimaryBlackBg,
        onBackground = FigmaTextWhite,
        surface = FigmaSecondaryAvastBlueDark,
        onSurface = FigmaTextWhite,
        primary = FigmaSecondaryBlackDark,
        error = FigmaStatusPink
    ),
        textColorLabel = FigmaSecondaryAvastPurpleBright,
        colorAccent = FigmaStatusGreen,
        ... //bunch of custom colors
)

private val LocalAsbTheme = staticCompositionLocalOf { LightBase }
var navBarColor: Color? = null
var statusBarColor: Color? = null

@Composable
fun ASBTheme(
    darkTheme: Boolean = isSystemInDarkTheme(),
    content: @Composable () -> Unit
) {
    val colors = if (darkTheme) {
        DarkBase
    } else {
        LightBase
    }
    if (darkTheme) {
        navBarColor = DarkBase.background
        statusBarColor = DarkBase.primary
    } else {
        navBarColor = LightBase.background
        statusBarColor = LightBase.primary
    }

    SetBarsTheme(statusBarColor!!, navBarColor!!)

    CompositionLocalProvider(
        LocalAsbTheme provides colors,
    ) {
        MaterialTheme(
            colors = colors.material,
            content = content,
        )
    }
}

val MaterialTheme.asbTheme: ASBTheme
    @Composable
    @ReadOnlyComposable
    get() = LocalAsbTheme.current
Run Code Online (Sandbox Code Playgroud)

SetBarsTheme()是我尝试根据生命周期事件设置状态栏颜色的地方,以便颜色在onPause() / onStop(). 我还尝试在这个逻辑之外设置颜色,但错误仍然存​​在。

@Composable
fun SetBarsTheme(
    statusBarColor: Color,
    navigationBarColor: Color,
    darkIcons:Boolean=false,
) {
    val lifecycleOwner = LocalLifecycleOwner.current
    val systemUiController = rememberSystemUiController()

    DisposableEffect(lifecycleOwner) {
        // Create an observer that triggers our remembered callbacks
        // for sending analytics events
        val observer = LifecycleEventObserver { _, event ->
            if (event == Lifecycle.Event.ON_RESUME) {
               systemUiController.setStatusBarColor(color=statusBarColor,darkIcons)
                systemUiController.setNavigationBarColor(color=navigationBarColor)
            }
        }

        // Add the observer to the lifecycle
        lifecycleOwner.lifecycle.addObserver(observer)

        // When the effect leaves the Composition, remove the observer
        onDispose {
            lifecycleOwner.lifecycle.removeObserver(observer)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Phi*_*hov 2

有一个已修复的错误,请确保您使用的是最新的伴奏版本。

如果您仍然能够重现它,您应该报告它,包括使用的设备/依赖项版本。