Training - Jetpack Compose - fundamentals
Publié le 24 May 2022
sommaire: Training - Jetpack Compose
github organisation: Training - Jetpack Compose
dépots: compose-fundamentals
Les mécanismes de fonctionnement
Refactorisation du starter
Dans Router.kt
sealed class Screen {
object Navigation : Screen()
object Text : Screen()
object TextField : Screen()
object Buttons : Screen()
object ProgressIndicator : Screen()
object AlertDialog : Screen()
}
object Router {
var currentScreen: MutableState<Screen> = mutableStateOf(Navigation)
fun navigateTo(destination: Screen) {
currentScreen.value = destination
}
}
devient
sealed class Screen {
object Navigation : Screen()
object Text : Screen()
object TextField : Screen()
object Buttons : Screen()
object ProgressIndicator : Screen()
object AlertDialog : Screen()
}
object Router {
val screens: Array<Pair<Int, Screen>> = arrayOf(
Pair(R.string.text, Screen.Text),
Pair(R.string.text_field, Screen.TextField),
Pair(R.string.buttons, Screen.Buttons),
Pair(R.string.progress_indicators, Screen.ProgressIndicator),
Pair(R.string.alert_dialog, Screen.AlertDialog),
)
var currentScreen: MutableState<Screen> = mutableStateOf(Navigation)
fun navigateTo(destination: Screen) {
currentScreen.value = destination
}
}
Dans NavigationScreen.kt
@Composable
fun NavigationScreen() {
Surface(
color = White,
modifier = Modifier.fillMaxSize()
) {
Column(
verticalArrangement = Center,
horizontalAlignment = CenterHorizontally
) {
NavigationButton(stringResource(id = text), Text)
NavigationButton(stringResource(id = text_field), TextField)
NavigationButton(stringResource(id = buttons), Buttons)
NavigationButton(stringResource(id = progress_indicators), ProgressIndicator)
NavigationButton(stringResource(id = alert_dialog), AlertDialog)
}
}
}
Devient
@Composable
fun NavigationScreen() {
Surface(
color = Color.White,
modifier = Modifier.fillMaxSize()
) {
Column(
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Router.screens.map {
NavigationButton(
stringResource(it.first),
it.second
)
}
}
}
}