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 SwiftUI
En SwiftUI el body se computa y la vista se invalida cuando @State cambia. En CrossFly tú montas
una vez y mutas. Lee primero la filosofía.
Tabla de traducción
| SwiftUI | CrossFly |
|---|---|
View / body computado |
UI montada una vez en onShow() |
@State / @Binding / @ObservedObject |
campos + repaint() (sin invalidación automática) |
VStack / HStack / ZStack |
VerticalLayout / HorizontalLayout / RelativeLayout |
Spacer() |
Gap / fracciones (el Spacer del framework fue eliminado) |
.padding() |
ingap en el estilo |
List |
VirtualListView |
Text |
Label |
Button |
Button |
NavigationStack / .sheet |
pila de Window / ActionSheet |
.alert |
Alert |
async / await / Task |
Thread + Component.onUI(...) |
Color |
int 0xAARRGGBB |
Diferencia de destino
SwiftUI corre solo en Apple. CrossFly es una base Java que corre en iOS y Android, Escritorio y Web — el mismo código de pantalla en todos (ver plataformas).
Cómo era / cómo queda — formulario
// SwiftUI
struct LoginView: View {
@State private var email = ""
var body: some View {
VStack {
TextField("E-mail", text: $email)
Button("Entrar") { entrar(email) }
}
}
}
// CrossFly
public class LoginScreen extends Window {
@Override public void onShow() throws Exception {
super.onShow();
setLayout(new VerticalLayout());
TextField email = new TextField().caption("E-mail");
add(LAY_AUTO, email);
Button entrar = new Button("Entrar");
entrar.onAction(c -> entrar(email.getText())); // lee el valor al enviar (sin $binding)
add(LAY_AUTO, entrar);
}
}
Sin
$binding: tú leesgetText()cuando lo necesitas (ej.: en elonAction), no hay vínculo automático campo↔variable (ver Campos de texto).
Véase también
¿Te resultó útil esta página?¡Gracias por tu opinión!