【发布时间】:2021-08-05 17:49:58
【问题描述】:
我正在使用 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()
}
}
)
}
}
应用:
class MyApp: Application() {
val isDark = mutableStateOf(false)
fun toggleDarkTheme() {
isDark.value = !isDark.value
}
}
【问题讨论】:
-
我很好奇,你为什么写错代码?你不应该在你的应用程序子类中放置一个切换或任何喷气背包编写代码。为什么不遵循任何官方指南
-
你能帮帮我吗?为应用程序处理全局主题的正确方法是什么?这可以应用并保留在每项活动中。另外,起初 isDark 状态是在 Fragment 中与 BottomSheet 一起创建的,所以我认为这不是问题
标签: android android-jetpack-compose bottom-sheet android-dark-theme