Android Jetpack Compose - 浅色主题更改后底部工作表不会展开

Drs*_*avi 7 android bottom-sheet android-jetpack-compose android-dark-theme

我正在使用 jetpack compose 1.0.0,BottomSheetScaffold 工作正常,但是在我添加了一个功能来使用按钮将主题从浅色更改为深色后,在更改主题后,底部工作表将不会展开。我正在使用 Application 类的属性来处理主题状态。这是一些代码:

使用底部工作表的屏幕,顺便说一句,这是在片段上

MyAppTheme(application.isDark.value) {

    val bottomSheetScaffoldState = rememberBottomSheetScaffoldState(
        bottomSheetState = BottomSheetState(BottomSheetValue.Collapsed)
    )
    val coroutineScope = rememberCoroutineScope()

    BottomSheetScaffold(
        scaffoldState = bottomSheetScaffoldState,
        sheetContent = {
            HomeBottomSheet(
                onCancelClick = {
                    coroutineScope.launch {
                        bottomSheetScaffoldState.bottomSheetState.collapse()
                    }
                },
                onDoneClick = { text ->
                    Toast.makeText(requireContext(), text, Toast.LENGTH_LONG)
                        .show()
                }
            )
        },
        sheetPeekHeight = 0.dp
    ) {
        HomeScreen(
            darkTheme = application.isDark.value,
            darkThemeToggleClick = application::toggleDarkTheme,
            onHistoryClick = {
                findNavController().navigate(R.id.goToHistory)
            },
            onAddClick = {
                coroutineScope.launch {
                    bottomSheetScaffoldState.bottomSheetState.expand()
                }
            }
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

应用:

class MyApp: Application() {

    val isDark = mutableStateOf(false)

    fun toggleDarkTheme() {
        isDark.value = !isDark.value
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 12

看起来像是初始化的问题bottomSheetScaffoldState

应该

val scaffoldState = rememberBottomSheetScaffoldState(
     bottomSheetState = rememberBottomSheetState(BottomSheetValue.Collapsed)
)

Run Code Online (Sandbox Code Playgroud)