यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
दर्शन: CrossFly बनाम डिक्लेरेटिव-रिएक्टिव
मूल के अनुसार अनुवाद तालिकाओं से पहले, वह मानसिक अनुबंध जो सभी के लिए मान्य है।
केवल एक बदलाव जो मायने रखता है
डिक्लेरेटिव-रिएक्टिव फ्रेमवर्क (Flutter, Compose, SwiftUI, React Native) UI को स्टेट के फ़ंक्शन के रूप में वर्णित करते हैं और स्टेट बदलने पर उसे पुनर्निर्मित करते हैं। CrossFly इम्पेरेटिव और ऑब्जेक्ट- ओरिएंटेड है: आप एक बार म्यूटेबल
Componentऑब्जेक्ट बनाते हैं (onShow()में), रेफ़रेंस रखते हैं, प्रॉपर्टीज़ बदलते हैं औरrepaint()कॉल करते हैं।
कोई पुनः निष्पादित build() नहीं है, कोई setState नहीं है, कोई async/await नहीं है।
Flutter/Compose के साथ समानता का बिंदु: सब कुछ GPU के माध्यम से रेंडर होता है (OpenGL/WebGL), बिना नेटिव विजेट्स के — दिखावट
सभी प्लेटफ़ॉर्म पर एक समान है।
4 स्तंभों का मैपिंग
| आपके फ्रेमवर्क में | CrossFly में |
|---|---|
पुनः निष्पादित build()/body |
onShow() में एक बार माउंट होता है; उसके बाद आप ऑब्जेक्ट्स को म्यूट करते हैं |
setState/@State/useState → rebuild |
फ़ील्ड बदलें + repaint() (+ setValidLayout(false) यदि आकार बदल गया) |
| नेस्टेड लेआउट विजेट्स | add(valor, comp) — LAY_AUTO(0f) / LAY_FILL(-1f) / अंश |
async/await/Future |
Thread + Component.onUI(...) (स्पष्ट थ्रेडिंग) |
काउंटर, दो मॉडल
// डिक्लेरेटिव-रिएक्टिव (छद्म): स्टेट बदलता है → UI खुद ही पुनर्निर्मित होती है।
// CrossFly: आप रेफ़रेंस रखते हैं और मैन्युअली अपडेट करते हैं।
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)); }); // म्यूटेट करता है + रीपेंट करता है
add(LAY_AUTO, mais);
}
}
सार्वभौमिक जाल (हर मूल के लिए मान्य)
- उन कंपोनेंट्स के रेफ़रेंस रखें जिन्हें आप अपडेट करने वाले हैं (
Windowके फ़ील्ड) — पुनर्निर्माण द्वारा उन्हें “फिर से खोजने” का कोई तरीका नहीं है। - Padding/मार्जिन विजेट्स नहीं हैं: वे कंपोनेंट के स्टाइल में
ingap/outgapहैं। - कोई hot-reload नहीं — यह संकलित Java है (डेस्कटॉप पर चक्र तेज़ है; देखें platforms)।
- टेक्स्ट का i18n मैनुअल है — कोई अंतर्निहित स्ट्रिंग कैटलॉग नहीं है (देखें i18n)।
- रंग
intARGB0xAARRGGBBहैं — कोईColorक्लास नहीं है (UIConstants/ColorUtilsका उपयोग करें)।
अपना मूल चुनें
Flutter · Jetpack Compose · SwiftUI · React Native · TotalCross/SuperWaba
यह भी देखें
- अवधारणा: स्टेट और डेटा फ़्लो · सब कुछ एक Component है