概要
画面遷移をする際に、遷移元の値を遷移先の画面に引き継ぎたいと思ったのですが、少し手こずりました。
コード
test.kt
composable("favorite") {
FavoriteScreen (
toFavorite = {navController.navigate("favorite")},
toDetail = {productId -> navController.navigate("detail/${productId}")}
)
}
composable(
"detail/{productId}",
arguments = listOf(
navArgument("productId"){
type = NavType.IntType
}
)
) { backStackEntry ->
val productId = backStackEntry.arguments?.getInt("productId")?:0
val viewModel:FavoriteScreenViewModel = FavoriteScreenViewModel()
ProductDetailScreen (productId,viewModel)
}
内容
Int型の商品番号productIdをFavoriteScreenからProductDetailScreenに渡しています。
注意点
これでひっかかったのは私だけかもしれませんが、引き継ぎ先を指定せずに引き継ぐ値だけ決めてしまうとエラーを吐きます。
どうしてエラーが出てるのかわからなかったので気づくのに時間がかかりました。