SAVEDSTATEHANDLE不包含导航参数

发布于 2025-01-31 16:08:16 字数 1109 浏览 3 评论 0原文

我正在尝试注入savedstatehandle。我正在使用Koin,JetPack组成和导航。 我设法使它起作用,但我认为这不是正确的实例(我没有得到我的价值观)。

这是我到目前为止所做的:

设置参数:

private fun NavGraphBuilder.addDetails(
    navController: NavHostController,
    root: Screen
) {
    composable(route = LeafScreen.Details.createRoute(root),
        arguments = listOf(
            navArgument("showId") { type = NavType.LongType }
        )) {
        DetailsScreen(navigateUp = navController::navigateUp)
    }
}

定义我的ViewModel:

internal class DetailsViewModel(
    val handle: SavedStateHandle,
    private val getMovieDetailsUseCase: GetMovieDetailsUseCase
) : ViewModel() 

定义我的组合:

@Composable
fun DetailsScreen(
    navigateUp: () -> Unit
) {
    DetailsScreen(
        viewModel = getStateViewModel(),
        navigateUp = navigateUp,
    )
}

和我的模块:

val uiDetailsModules = module {
    viewModelOf(::DetailsViewModel)
}

它运行,但showID来自val showid = handle.get.get&lt&lt>(”( showid”)为null。

I'm trying to inject SavedStateHandle. I am using Koin, Jetpack Compose and Navigation.
I've managed to make it work, but I think it's not the right instance (I don't get my values).

This is what I do so far:

Setting the argument:

private fun NavGraphBuilder.addDetails(
    navController: NavHostController,
    root: Screen
) {
    composable(route = LeafScreen.Details.createRoute(root),
        arguments = listOf(
            navArgument("showId") { type = NavType.LongType }
        )) {
        DetailsScreen(navigateUp = navController::navigateUp)
    }
}

Defining my ViewModel:

internal class DetailsViewModel(
    val handle: SavedStateHandle,
    private val getMovieDetailsUseCase: GetMovieDetailsUseCase
) : ViewModel() 

Defining my composable:

@Composable
fun DetailsScreen(
    navigateUp: () -> Unit
) {
    DetailsScreen(
        viewModel = getStateViewModel(),
        navigateUp = navigateUp,
    )
}

And my modules:

val uiDetailsModules = module {
    viewModelOf(::DetailsViewModel)
}

It runs but showId from val showId = handle.get<Long>("showId") is null.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文