Saltar al contenido
CrossFly es 100% open sourceSíguenos en GitHub
CrossFlyCrossFly
Empezar

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ú lees getText() cuando lo necesitas (ej.: en el onAction), no hay vínculo automático campo↔variable (ver Campos de texto).

Véase también

¿Te resultó útil esta página?