تكرار السؤال: …
الإجابة المختصرة
Compose إطار عمل تصريحي (Declarative) يصف شكل الواجهة بناءً على الحالة الحالية، بينما النهج الإجرائي القديم (Imperative) يعتمد على تعديل شجرة الـ Views يدويًا.
الشرح
في نظام Views التقليدي (Imperative)، تقوم بتهيئة الـ View وتعديل خصائصها يدويًا مثل textView.setText() أو visibility = GONE، مما قد يسبب عدم اتساق بين البيانات المعروضة والحالة الفعلية. في Jetpack Compose، تصف الواجهة كدالة تستقبل الحالة، وعندما تتغير الحالة يعيد Compose استدعاء الدوال المتأثرة تلقائيًا (Recomposition).
مثال بالكود
@Composable
fun Greeting(name: String, isVisible: Boolean) {
if (isVisible) {
Text(text = "مرحبًا بك، $name!", style = MaterialTheme.typography.bodyLarge)
}
}أخطاء شائعة
- محاولة الاحتفاظ بمرجع لدالة الـ Composable أو محاولة تعديل خصائصها بعد تنفيذها كما كان يحدث مع كائنات View القديمة.