如何在 Jetpack Compose 中获取刀柄在 activity 之外的视图模型
How to get view model with hilt outside activity in jetpack compose
所以我有一个名为“ListScreen”的 kotlin 文件(它不是 class!只是一个具有可组合函数的 .kt 文件),我正在使用组合导航图系统处理事务。
现在我正在尝试从“ListScreen”文件访问我的 ViewModel
,它用 @HiltViewModel
表示。
显然,在过去,有一种方法可以像这样访问 ViewModels
:
viewModel: PokemonListViewModel = hiltNavGraphViewModels()
但这现在不起作用。我该怎么做?
这是我的 ViewModel
class:
@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()
)
hiltNavGraphViewModels() 现已删除。请改用 hiltViewModel()。
来自 android 文档。
Deprecated: Use hiltViewModel() instead.. Replace with: "hiltViewModel()".
所以我有一个名为“ListScreen”的 kotlin 文件(它不是 class!只是一个具有可组合函数的 .kt 文件),我正在使用组合导航图系统处理事务。
现在我正在尝试从“ListScreen”文件访问我的 ViewModel
,它用 @HiltViewModel
表示。
显然,在过去,有一种方法可以像这样访问 ViewModels
:
viewModel: PokemonListViewModel = hiltNavGraphViewModels()
但这现在不起作用。我该怎么做?
这是我的 ViewModel
class:
@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()
)
hiltNavGraphViewModels() 现已删除。请改用 hiltViewModel()。
来自 android 文档。
Deprecated: Use hiltViewModel() instead.. Replace with: "hiltViewModel()".