【问题标题】:How to get view model with hilt outside activity in jetpack compose如何在jetpack compose中获取带有外部活动的视图模型
【发布时间】:2021-07-01 14:34:57
【问题描述】:

所以我有一个名为“ListScreen”的 kotlin 文件(它不是一个类!只是一个带有可组合函数的 .kt 文件),我正在使用组合导航图系统处理事务。 现在我正在尝试访问我的ViewModel,它在“ListScreen”文件中用@HiltViewModel 表示。 显然,在过去,有一种方法可以访问ViewModels,如下所示: viewModel: PokemonListViewModel = hiltNavGraphViewModels() 但这现在不起作用。我该怎么做?

这是我的ViewModel 课程:

@HiltViewModel
class PokemonListViewModel @Inject constructor(
private val repository: PokemonRepository
) : ViewModel() {


fun calcDominantColor(
    drawable: Drawable,
    onFinish: (Color) -> Unit
) {
    val bmp = (drawable as BitmapDrawable).bitmap.copy(Bitmap.Config.ARGB_8888, true)

    Palette.from(bmp).generate { palette ->
        palette?.dominantSwatch?.rgb?.let {
            onFinish(Color(it))

        }

    }
}
}

这是不工作的代码块:

 @Composable
fun PokedexEntry(
    entry: PokedexListEntry,
    navController: NavController,
    modifier: Modifier = Modifier,
    viewModel: PokemonListViewModel = hiltNavGraphViewModels()

) 

【问题讨论】:

    标签: android viewmodel android-jetpack-compose dagger-hilt android-navigation-graph


    【解决方案1】:

    hiltNavGraphViewModels() 现已弃用。请改用 hiltViewModel()。

    来自安卓文档。

    Deprecated: Use hiltViewModel() instead.. Replace with: "hiltViewModel()".
    

    https://developer.android.com/reference/kotlin/androidx/hilt/navigation/compose/package-summary#hiltNavGraphViewModel()

    【讨论】:

    • 嗯,弃用真的很快。让我感到惊讶,即使是谷歌
    • 是的,因为 compose 还不稳定,任何事情都有可能发生。
    猜你喜欢
    • 1970-01-01
    • 2023-01-03
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 2021-10-27
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多