Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
Viniendo de Jetpack Compose
En Compose (Kotlin declarativo) la UI se recompone cuando el estado observable cambia. En CrossFly tú montas una vez y mutas. Lee primero la filosofía.
Tabla de traducción
| Jetpack Compose | CrossFly |
|---|---|
@Composable fun |
método que monta una vez en onShow() |
remember { mutableStateOf(...) } + recomposición |
campo + repaint() (sin recomposición) |
Column / Row / Box |
VerticalLayout / HorizontalLayout / RelativeLayout |
Modifier.weight(1f) |
add(LAY_FILL, c) (-1f) |
Modifier.padding(...) |
ingap en el estilo |
LazyColumn |
VirtualListView |
Text |
Label |
Button |
Button |
Scaffold / TopAppBar |
Window (+ TabBar) |
NavController / NavHost |
pila de Window (show() / hide()) |
ViewModel + StateFlow |
ViewModel manual + callback (sin recolección de flujo) |
LaunchedEffect / coroutines |
Thread + Component.onUI(...) |
Color(0xFF...) |
int 0xAARRGGBB (UIConstants / ColorUtils) |
Cómo era / cómo queda — el contador
// Compose: muda o state → recompõe sozinho
@Composable fun Contador() {
var n by remember { mutableStateOf(0) }
Column {
Text("$n")
Button(onClick = { n++ }) { Text("+") }
}
}
// CrossFly: guarda la referencia y actualiza a mano
public class Contador extends Window {
private int n = 0;
private Label display;
@Override public void onShow() throws Exception {
super.onShow();
setLayout(new VerticalLayout());
add(LAY_AUTO, display = new Label("0"));
Button mais = new Button("+");
mais.onAction(c -> { n++; display.setText(String.valueOf(n)); }); // sin recomposición
add(LAY_AUTO, mais);
}
}
El punto que más sorprende
StateFlow/collectAsState no tienen equivalente: CrossFly no observa tu estado. Donde
recolectarías un flujo, guarda el valor en un campo y llama a repaint() (o un observe(Runnable) manual en
tu ViewModel — ver arquitectura de app).
Véase también
¿Te resultó útil esta página?¡Gracias por tu opinión!