En este ejercicio vamos a reforzar los conceptos aprendidos en los ejercicios anteriores, para ello vamos a crear una app con el siguiente aspecto:
Como se puede ver es un conversos de distintas medidas europeas a anglosajonas. Usaremos como componente base para todas las medidas, el siguiente:
@Composable
fun BaseMedidas(
textoEntrada: String,
entrada: String,
textoSalida: String,
salida: String,
onEntradaChanged: (String) -> Unit,
) {
Row(
modifier = Modifier.padding(5.dp),
verticalAlignment = Alignment.CenterVertically,
)
{
Text(text = textoEntrada)
TextField(
modifier = Modifier
.width(120.dp)
.padding(5.dp),
value = entrada,
onValueChange = onEntradaChanged
)
TextField(
modifier = Modifier
.width(120.dp)
.padding(5.dp),
value = salida,
onValueChange = {},
enabled = false
)
Text(text = textoSalida)
}
}
✋ Importante: Deberemos usar una función para cada medida, en todos los casos que sea posible usaremos derivedStateOf para mejorar la codificación, además también crearemos los states necesarios como rememberSaveable para restablecer los estados de la aplicación en caso de giro de pantalla u otros acontecimientos que nos reinicien nuestra app.