[英]What is the proper way to navigate between screens in jetpack compose while there's coroutines jobs to be executed in the viewmodel?
[英]Trying to navigate between screens with jetpack compose
我對 Jetpack 和 Android 開發還很陌生,我正在嘗試在視圖之間導航。 來自 Swift,我認為我可以通過NavController
來更新視圖。
我的RootScreen
看起來像這樣
@Composable
fun RootScreen() {
val navigationController = rememberNavController()
Scaffold(
bottomBar = {
BottomBar(navigationController)
}
) {
NavHost(
navController = navigationController,
startDestination = NavigationItem.Home.route
) {
composable(NavigationItem.Home.route) {
HomeScreen(navController = navigationController)
}
composable(NavigationItem.Routes.route) {
RouteList()
}
composable(NavigationItem.Settings.route) {
Text("Settings")
}
}
}
}
在我的HomeScreen
上,我正在點擊一個具有 navigationAction 的視圖,我正在其中更新路線,但該視圖不會更新。
@Composable
fun HomeScreen(navController: NavController) {
...
HomeCard(title = homeScreen[0].title,
image = painterResource(id = homeScreen[0].image),
frameHeight = 250,
frameWidth = 175,
navigationAction = {
navController.navigate(NavigationItem.Routes.route)
}
)
}
這是我點擊操作的地方
@Composable
fun HomeCard(
title: String,
image: Painter,
frameHeight: Int,
frameWidth: Int,
navigationAction: () -> Unit
) {
Card(
elevation = 13.dp,
modifier = Modifier
.padding(top = 8.dp)
.clip(RoundedCornerShape(13.dp))
.height(frameHeight.dp)
.width(frameWidth.dp)
.clickable { navigationAction }
) {
....
}
您的屏幕未被導航,因為從未調用過navigationAction
。
@Composable
fun HomeCard(
navigationAction: () -> Unit
) {
Card(
modifier = Modifier
.clickable { navigationAction.invoke() }
) {
....
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.