【发布时间】:2023-02-16 15:35:34
【问题描述】:
我在 youtube 上学会了这个抽屉
https://www.youtube.com/watch?v=JLICaBEiJS0&list=PLQkwcJG4YTCSpJ2NLhDTHhi6XBNfk9WiC&index=31 菲利普拉克纳
我想将抽屉添加到我的应用程序中,它有多个屏幕,其中一些不需要抽屉,所以我使用 screens 实现了导航,并且一些屏幕还需要将抽屉放在它们上面。
这是抽屉的代码
val scaffoldState = rememberScaffoldState()
val scope = rememberCoroutineScope()
Scaffold(
drawerGesturesEnabled = scaffoldState.drawerState.isOpen,
scaffoldState = scaffoldState, topBar = {
AppBar(onNavigationIconClick = {
scope.launch {
scaffoldState.drawerState.open()
}
})
}, drawerContent = {
DrawerHeader()
DrawerBody(items = listOf(
MenuItem(
id = "home",
title = "Home",
contentDescription = "Go to home screen",
icon = Icons.Default.Home
),
MenuItem(
id = "settings",
title = "Settings",
contentDescription = "Go to Settings screen",
icon = Icons.Default.Settings
),
MenuItem(
id = "help",
title = "Help",
contentDescription = "Go to help screen",
icon = Icons.Default.Info
),
), onItemClick = {
println("Clicked on ${it.title}")
when (it.id) {
"home" -> {
println("Clicked on ${it.title}")
}
"settings" -> {
println("Clicked on ${it.title}")
}
"help" -> {
println("Clicked on ${it.title}")
}
}
})
}) {
Text(text = "Hello World")
}
Text = Hello world 是我想传递屏幕参数的地方,我不知道该怎么做。我想添加一个参数,该参数采用可组合函数并在内部运行
我关注了这个关于如何在科特林中导航的导航视频
https://www.youtube.com/watch?v=4gUeyNkGE3g&list=PLQkwcJG4YTCSpJ2NLhDTHhi6XBNfk9WiC&index=18
它有 3 个大文件,所以如果你问我在这里发布它们,但我会尝试更具体地说明需要什么
composable(route = Screen.RegisterScreen.route) {
RegisterScreen(navController = navCotroller)
}
如果我把代码放在抽屉里,效果很好,但我想把代码拆分得更干净,因为我在更多地方使用抽屉
代码像下面的例子一样工作
composable(route = Screen.PreferenceScreen.route) {
val scaffoldState = rememberScaffoldState()
val scope = rememberCoroutineScope()
Scaffold(
drawerGesturesEnabled = scaffoldState.drawerState.isOpen,
scaffoldState = scaffoldState,
topBar = {
AppBar(onNavigationIconClick = {
scope.launch {
scaffoldState.drawerState.open()
}
})
},
drawerContent = {
DrawerHeader()
DrawerBody(items = listOf(
MenuItem(
id = "swipe",
title = "Swipe",
contentDescription = "Go to Swipe screen",
icon = Icons.Default.Home
),
MenuItem(
id = "settings",
title = "Settings",
contentDescription = "Go to Settings screen",
icon = Icons.Default.Settings
),
MenuItem(
id = "profile",
title = "Profile",
contentDescription = "Go to profile screen",
icon = Icons.Default.Info
),
), onItemClick = {
when (it.id) {
"swipe" -> {
navCotroller.navigate(Screen.SwipeScreen.route)
}
"settings" -> {
navCotroller.navigate(Screen.PreferenceScreen.route)
}
"profile" -> {
navCotroller.navigate(Screen.CelebProfileScreen.route)
}
}
})
}) {
-----> PreferenceScreen(navController = navCotroller)
}
}
但它不是干净的代码!我怎样才能使用函数指针来完成这项工作??
【问题讨论】:
-
嗨,如果您需要将具有对齐方式的内容传递到
Column之类的布局中,我添加了另一个答案。感谢您采纳答案
标签: android kotlin lambda android-jetpack-compose function-parameter