यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
Jetpack Compose से आना
Compose (डिक्लेरेटिव Kotlin) में जब ऑब्ज़र्वेबल स्टेट बदलता है तो UI रीकंपोज़ होता है। CrossFly में आप एक बार माउंट करते हैं और म्यूट करते हैं। पहले दर्शन पढ़ें।
अनुवाद तालिका
| Jetpack Compose | CrossFly |
|---|---|
@Composable fun |
वह मेथड जो onShow() में एक बार माउंट करता है |
remember { mutableStateOf(...) } + रीकंपोज़िशन |
फ़ील्ड + repaint() (बिना रीकंपोज़िशन) |
Column / Row / Box |
VerticalLayout / HorizontalLayout / RelativeLayout |
Modifier.weight(1f) |
add(LAY_FILL, c) (-1f) |
Modifier.padding(...) |
स्टाइल में ingap |
LazyColumn |
VirtualListView |
Text |
Label |
Button |
Button |
Scaffold / TopAppBar |
Window (+ TabBar) |
NavController / NavHost |
Window का स्टैक (show() / hide()) |
ViewModel + StateFlow |
मैनुअल ViewModel + callback (बिना फ़्लो कलेक्शन के) |
LaunchedEffect / coroutines |
Thread + Component.onUI(...) |
Color(0xFF...) |
int 0xAARRGGBB (UIConstants / ColorUtils) |
पहले कैसा था / अब कैसा है — काउंटर
// Compose: muda o state → recompõe sozinho
@Composable fun Contador() {
var n by remember { mutableStateOf(0) }
Column {
Text("$n")
Button(onClick = { n++ }) { Text("+") }
}
}
// 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);
}
}
वह बिंदु जो सबसे ज़्यादा चौंकाता है
StateFlow/collectAsState का कोई समकक्ष नहीं है: CrossFly आपके स्टेट को ऑब्ज़र्व नहीं करता। जहाँ आप
एक फ़्लो कलेक्ट करते, वहाँ मान को एक फ़ील्ड में रखें और repaint() कॉल करें (या अपने ViewModel में एक मैनुअल
observe(Runnable) — देखें ऐप आर्किटेक्चर)।
यह भी देखें
क्या यह पृष्ठ उपयोगी था?प्रतिक्रिया के लिए धन्यवाद!