所以我想要实现的是:
- 一个承载 BottomNav 栏的家庭组合(此处使用脚手架)
- 底部导航栏附有 3 个其他可组合项
- 3 个可组合项中的每一个都有自己的惰性列
- 3 个惰性列中的每个项目都有一个菜单图标,单击该图标会打开底部工作表
借助此处的答案,我可以通过将脚手架封闭在 ModalBottonSheetLayout 中来实现上述目的:Jetpack Compose Scaffold + Modal Bottom Sheet
问题:
- 底部工作表的目的是显示一个菜单项,单击该菜单项应从lazyColumn中删除该项目
- 所以底部工作表需要知道被点击删除它的项目的详细信息
我怎样才能做到这一点?主可组合项没有任何有关其托管的可组合项中存在的惰性列中的项目的信息。
有没有不同的方法来解决这个问题?
这是我的代码:
HomeComposable.kt
fun HomeComposable(homeViewModel: HomeViewModel,
navController: NavHostController) {
ModalBottomSheetLayout(
sheetContent = {
//get the id of the message here so it can be
//deleted
Button(
text = "delete Message")
onClick = deleteMessage(message.id
)
}
) {
Scaffold(
content = {
NavHost(navController = navController, startDestination =
WHATS_NEW_COMPOSABLE) {
composable(MESSAGES_COMPOSABLE) {
MessageItemsComposable(
homeViewModel,
navController,
bottomSheetState
)
}
}
}
)
MessageItemsComposable.kt
val messages : List<Messages> = getMessagesFromNetwork()
LazyColumn {
items(messages) { message ->
Row{
Text(message.title)
Icon(
onClick = {
bottomState.show()
//show a bottom sheet with an option to delete
}
) {
//Draw the icon
}
}
}
}