यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
SwiftUI से आना
SwiftUI में body की गणना होती है और जब @State बदलता है तो व्यू अमान्य हो जाता है। CrossFly में आप एक बार
माउंट करते हैं और म्यूट करते हैं। पहले दर्शन पढ़ें।
अनुवाद तालिका
| SwiftUI | CrossFly |
|---|---|
View / गणना किया गया body |
onShow() में एक बार माउंट किया गया UI |
@State / @Binding / @ObservedObject |
फ़ील्ड + repaint() (बिना स्वचालित अमान्यकरण के) |
VStack / HStack / ZStack |
VerticalLayout / HorizontalLayout / RelativeLayout |
Spacer() |
Gap / अंश (फ्रेमवर्क का Spacer हटा दिया गया) |
.padding() |
स्टाइल में ingap |
List |
VirtualListView |
Text |
Label |
Button |
Button |
NavigationStack / .sheet |
Window का स्टैक / ActionSheet |
.alert |
Alert |
async / await / Task |
Thread + Component.onUI(...) |
Color |
int 0xAARRGGBB |
गंतव्य का अंतर
SwiftUI केवल Apple पर चलता है। CrossFly एक Java बेस है जो iOS और Android, Desktop तथा Web पर चलता है — सभी में समान स्क्रीन कोड (देखें प्लेटफ़ॉर्म)।
पहले कैसा था / अब कैसा है — फ़ॉर्म
// 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())); // सबमिट पर मान पढ़ता है (बिना $binding)
add(LAY_AUTO, entrar);
}
}
बिना
$binding: जब आपको ज़रूरत हो तब आपgetText()पढ़ते हैं (उदा.:onActionमें), फ़ील्ड↔वैरिएबल के बीच कोई स्वचालित बंधन नहीं है (देखें टेक्स्ट फ़ील्ड्स)।
यह भी देखें
क्या यह पृष्ठ उपयोगी था?प्रतिक्रिया के लिए धन्यवाद!