Compose Tab sin asa.Regla de migración 4: Escribir navegación … | Autor: SeongUg Steve Jung | Julio de 2021
Regla de migración 4: navegación combinada sin Hilt y ViewModelProvider
En este artículo, describiré cómo podemos implementar experimentos de Compose Tab sin Hilt y AAC ViewModel.
Puede pensar que Compose, Hilt y AAC ViewModel son importantes al leer este artículo.
A través de Hilt y ViewModel Provider, podemos inyectar fácilmente ViewModel en Activity / Fragment.
En el fragmento anterior, MainActivity
Se puede inyectar MainViewModel
En Compose, también tiene utilidades para ViewModel.
después hiltViewModel<VIEWMODEL>()
, Podemos obtener MainViewModel
El ejemplo es simple.
¿Entonces?
En el caso de varias pestañas, cada pestaña podrá tener su propio ViewModel de ámbito.
Awave, y el usuario se ha centrado en foo
Tab, el compositor está observando FooViewModel.title
Se procesará cuando el usuario se traslade a bar
etiqueta.
Si una clase hereda de AAC ViewModel
, Componga fácilmente la inyección de ViewModel apalancada.
¿Qué tal no usar AAC ViewModel y Hilt?
A través de las otras publicaciones anteriores, no usamos AAC ViewModel y Hilt.
Entonces necesitamos resolver un problema.
No inyectaremos y presentaremos todos los modelos de vista en Actividad / Fragmento
Suponga que hay más de 10 pestañas y cada pestaña tiene 1 ~ 3 modelos de vista.
Para simplificar la actividad de la pestaña de redacción anterior, puse ComposableHolder
inject()
es para DI
con render()
Está renderizando Compose View
.
La pantalla de pestañas tendrá cada ComposableHolder
En MainActivity, establece cada ComposableHolder para la pestaña.
MainActivity tiene ComposableHolder para cada pestaña. Cada ComposableHolder presentará la pantalla de cada pestaña e inyectará el modelo de vista apropiado.
No Hilt
con AAC ViewModel
Tenemos que prepararnos para proporcionar ViewModel para cada estructura de pestañas. Entonces definimos una interfaz: ComposableHolder
. Gestiona la DI
Inyección y Composable
Características.
apéndice
Puedes preguntar como ComposableHolder
Hay componentes.Déjame dar algunos ejemplos Dagger
Componente
El componente activo es @Component
. Cada componente de la pestaña será @SubComponent
En MainComponent
, El módulo de componentes tiene uno @Provides
Para el titular.La función obtiene Builder
de Component