Потенциальная замена для
viewModel из коробки. Основная проблема которой, это отдельная поддержка viewModel из каждого DI. retain же работает как Composable и не нуждается в отдельном @HiltViewModelПереписывать на
retain в ближайшие пару лет никто, конечно же, не будет, но знать про это все-таки стоит@Inject
class AuthPresenter(...) {
val state: StateFlow<UiState>
fun login(creds: Credentials) { .. }
fun logout() { .. }
}
interface AuthScreenProviders {
@IntoSet
@Provides
fun provideRoute(presenter: Provider<AuthPresenter>): RouteEntryProviderScope = {
entry<Route.Auth> { AuthScreen(presenter = retain { presenter() }) }
}
}