【发布时间】:2021-08-17 14:25:14
【问题描述】:
在 Jetpack Compose 中,我有一个带有一些内容的 BottomSheetScaffold。此内容是从 ViewModel 中观察到的,如下所示:
BottomSheetScaffold(
sheetContent = { SheetContent(sheetData = viewModel.sheetData) }
) {}
因此,每当viewModel.sheetData 发生变化时,就会触发重组。每当发生这种情况时,底部工作表会自动展开。这是错误还是功能?我可以禁用这个吗?我正在使用最新版本:1.1.0-alpha01
编辑:这是一个使用 LaunchedEffect 代替 ViewModel 的示例。
@OptIn(ExperimentalMaterialApi::class)
@Preview
@Composable
fun HomeScreen() {
var addSheetData by remember { mutableStateOf(false) }
LaunchedEffect(true) {
delay(2000)
addSheetData = true
}
BottomSheetScaffold(sheetContent = {
if (addSheetData) {
Column {
Text(text = "Text1", fontSize = 36.sp)
Text(text = "Text2", fontSize = 36.sp)
Text(text = "Text3", fontSize = 36.sp)
Text(text = "Text4", fontSize = 36.sp)
Text(text = "Text5", fontSize = 36.sp)
}
}
}, sheetBackgroundColor = Color.LightGray) {}
}
包含 5 个文本的工作表会自动展开。
【问题讨论】:
-
如果您希望您的问题得到解答,您需要让专家尽快获得具有可重现问题的工作样本。完美地,我应该将您的代码粘贴到我的示例项目中,并在我运行它时尽快看到问题。请将您的代码更新为minimal reproducible example。它应该包括字符串/数字等示例数据,您可以使用
LaunchedEffect随着时间的推移对其进行更新 -
@Philip 根据要求添加了一个示例。
标签: android-jetpack-compose material-components-android bottom-sheet