Pular para o conteúdo
CrossFly é 100% open sourceSiga no GitHub
CrossFlyCrossFly
Começar

Vindo do SwiftUI

No SwiftUI o body é computado e a view se invalida quando @State muda. No CrossFly você monta uma vez e muta. Leia primeiro a filosofia.

Tabela de tradução

SwiftUI CrossFly
View / body computado UI montada uma vez em onShow()
@State / @Binding / @ObservedObject campos + repaint() (sem invalidação automática)
VStack / HStack / ZStack VerticalLayout / HorizontalLayout / RelativeLayout
Spacer() Gap / frações (o Spacer do framework foi removido)
.padding() ingap no estilo
List VirtualListView
Text Label
Button Button
NavigationStack / .sheet pilha de Window / ActionSheet
.alert Alert
async / await / Task Thread + Component.onUI(...)
Color int 0xAARRGGBB

Diferença de destino

SwiftUI roda só em Apple. O CrossFly é uma base Java que roda em iOS e Android, Desktop e Web — o mesmo código de tela em todos (ver plataformas).

Como era / como fica — formulário

// 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()));   // lê o valor no envio (sem $binding)
      add(LAY_AUTO, entrar);
   }
}

Sem $binding: você lê getText() quando precisa (ex.: no onAction), não há vínculo automático campo↔variável (ver Campos de texto).

Veja também

Esta página foi útil?