Professional Documents
Culture Documents
Clean Architecture en Android Jetpack Compose
Clean Architecture en Android Jetpack Compose
@anncode
Clean Architecture
Android Jetpack
Compose
@anncode
Jetpack Compose
Toolkit para construir
Interfaces móviles nativas
@anncode
Jetpack Compose
Toolkit para construir
Interfaces móviles nativas
Kotlin
@anncode
Android Jetpack Compose
}
}
@anncode
Android Jetpack Compose
@anncode
Android Jetpack Compose
@anncode
Android Jetpack Compose
@Composable
fun Title(text: String) {
@anncode
Android Jetpack Compose
@Composable
fun Title(text: String) {
Text()
}
@anncode
Android Jetpack Compose
@Composable
fun Title(text: String) {
Text(
text = text,
color = deepBlue,
fontSize = 24.sp,
textAlign = TextAlign.Center,
style = TextStyle(fontWeight = FontWeight.Bold)
)
}
@anncode
https://anahisalgado.com/
Jetpack Compose
Los elementos de UI
se acomodan
jerárquicamente
@anncode
Jetpack Compose
Los elementos de UI Composable {
se acomodan
jerárquicamente
@anncode
Jetpack Compose
Los elementos de UI Composable {
se acomodan Composable {
jerárquicamente
}
}
@anncode
Jetpack Compose
Los elementos de UI Composable {
se acomodan Composable {
Composable {
jerárquicamente
}
}
}
@anncode
Jetpack Compose
Los elementos de UI Composable {
se acomodan Composable {
Composable {
jerárquicamente Composable {}
}
}
}
@anncode
Jetpack Compose
Los elementos de UI Composable {
se acomodan Composable {
Composable {
jerárquicamente Composable {}
}
}
}
@anncode
Clean Architecture
@anncode
Clean Architecture
Presentation layer
Data layer Domain layer
@anncode
Arquitectura
@anncode
Arquitectura
@anncode
Arquitectura
Presentation layer
Data layer Domain layer
Activity
UseCase ViewModel
ApiService Repository Fragment
@anncode
Jetpack Compose
Toolkit para construir
Interfaces móviles nativas
Kotlin
@anncode
Arquitectura
Presentation layer
Data layer Domain layer
Activity
UseCase ViewModel
ApiService Repository Fragment
@anncode
Arquitectura
Presentation layer
Activity
ViewModel
Fragment
setContent { }
Composables
@anncode
Arquitectura
Presentation layer
Activity
ViewModel ui
Fragment
setContent { }
Composables
@anncode
Arquitectura
Presentation layer
Activity ui
ViewModel
Fragment composable
setContent { }
Composables
@anncode
Arquitectura
Presentation layer
Activity ui
ViewModel
Fragment composable
@anncode
Arquitectura
Presentation layer
Activity ui
ViewModel
Fragment composable
@anncode
Arquitectura
Presentation layer
Activity ui
ViewModel
Fragment composable
@anncode
Arquitectura
Presentation layer
Activity ui
ViewModel
Fragment composable
@anncode
Arquitectura
Presentation layer
Activity ui
ViewModel
Fragment composable
@anncode
Arquitectura
Presentation layer
Activity ui
ViewModel
Fragment composable
@anncode
Android Jetpack Compose
@Inject lateinit var mainViewModel: MainViewModel
mainViewModel.getCatFact()
@anncode
Android Jetpack Compose
@Inject lateinit var mainViewModel: MainViewModel
mainViewModel.getCatFact()
mainViewModel.catFact LiveData
}
@anncode
Arquitectura
Presentation layer
Activity ui
ViewModel
Fragment composable
LiveData
@anncode
Arquitectura
Presentation layer
Activity ui
ViewModel
Fragment composable
LiveData
@anncode
Arquitectura
Presentation layer
Activity ui
ViewModel
Fragment composable
State
LiveData
@anncode
State
@anncode
State
✔ Patrón de diseño:
Unidirectional Data Flow
@anncode
Arquitectura
Presentation layer
Activity ui
ViewModel
Fragment composable
State
LiveData
@anncode
Jetpack Compose
@Composable
fun CatFactScreen(
catFact: LiveData<CatFactStates>,
onClick: () -> Unit
) {
@anncode
Jetpack Compose
@Composable
fun CatFactScreen(
catFact: LiveData<CatFactStates>,
onClick: () -> Unit
) {
@anncode
Jetpack Compose
@Composable
fun CatFactScreen(
catFact: LiveData<CatFactStates>,
onClick: () -> Unit
) {
} LiveData State
@anncode
Jetpack Compose
@anncode
Android Jetpack Compose
@Inject lateinit var mainViewModel: MainViewModel
setContent {
CatFactScreen(catFact = mainViewModel.catFact) {
mainViewModel.getCatFact()
}
}
} @anncode
Jetpack Compose
@Composable
fun CatFactScreen(
catFact: LiveData<CatFactStates>,
onClick: () -> Unit
) {
@anncode
https://anahisalgado.com/
Anahí Salgado
@anncode