0Pricing
Android Academy · درس

رفع الحالة

ارفع الحالة لإنشاء composables قابلة لإعادة الاستخدام

رفع الحالة درس مجاني في Android Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Android Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Android Academy 4 دروس في المجموع.

ما رفع الحالة؟

يعني رفع الحالة نقل الحالة إلى الأعلى خارج عنصر composable إلى المستدعي. ويصبح العنصر composable بلا حالة: إذ يكتفي باستقبال قيمة والإبلاغ عن التغييرات.

ذو حالة مقابل بلا حالة

يمتلك العنصر composable ذو الحالة حالته باستخدام remember. أما العنصر البلا حالة فلا يحتفظ بأي حالة؛ بل يأخذ القيمة كمعامل ويكشف عن حدث. وتكون العناصر composable البِلا حالة أسهل في إعادة الاستخدام والاختبار.

نمط value + onValueChange

يتكون الشكل القياسي لرفع الحالة من معاملين: value (الحالة الحالية التي تُمرّر إلى الأسفل) ولامدا onValueChange (الحدث الذي يُمرّر إلى الأعلى).

@Composable
fun NameField(value: String, onValueChange: (String) -> Unit) {
    TextField(value = value, onValueChange = onValueChange)
}

قبل رفع الحالة

يمتلك العنصر composable حالته هنا. وهو يعمل، لكن لا يمكن للعنصر الأب الوصول إلى النص، كما يصعب إعادة استخدام العنصر composable.

@Composable
fun NameField() {
    var name by remember { mutableStateOf("") }
    TextField(value = name, onValueChange = { name = it })
}

بعد رفع الحالة

تعيش الحالة الآن في العنصر الأب. ويصبح الحقل بلا حالة وقابلًا لإعادة الاستخدام، بينما يتحكم العنصر الأب في القيمة.

@Composable
fun Parent() {
    var name by remember { mutableStateOf("") }
    NameField(value = name, onValueChange = { name = it })
}

إلى الأسفل وإلى الأعلى

يتمثل النمط في أن الحالة تتدفق إلى الأسفل، والأحداث تتدفق إلى الأعلى. تنتقل القيمة إلى الأسفل كمعامل، بينما تنتقل التغييرات إلى الأعلى عبر رد الاتصال. ويُسمى ذلك تدفق البيانات أحادي الاتجاه.

لماذا نرفع الحالة؟

يتيح رفع الحالة لعدة عناصر composable مشاركة الحالة نفسها، كما يتيح للعنصر الأب التفاعل مع التغييرات، ويجعل العنصر الابن دالة صِرفة لمدخلاته — وهو أمر مثالي للمعاينات والاختبارات.

أين نرفع الحالة؟

ارفعوا الحالة إلى أدنى سلف مشترك يحتاج إليها. إذا كان عنصر composable واحد فقط يستخدم الحالة، فقد لا يكون رفعها ضروريًا. ارفعوها عندما يحتاج شيء أعلى في التسلسل إلى قراءتها أو التحكم فيها.

مثال مشترك

تقود قطعة واحدة من الحالة هنا كلًا من الحقل والمعاينة المباشرة، ولا يصبح ذلك ممكنًا إلا لأن الحالة مرفوعة.

@Composable
fun Editor() {
    var text by remember { mutableStateOf("") }
    Column {
        TextField(value = text, onValueChange = { text = it })
        Text(text = "Preview: $text")
    }
}

العنصر البلا حالة قابل لإعادة الاستخدام

لأن العنصر composable البلا حالة يأخذ قيمته كمعامل، يمكنكم معاينته باستخدام بيانات نموذجية واستخدامه في أي مكان مع مالكين مختلفين للحالة.

@Preview
@Composable
fun NameFieldPreview() {
    NameField(value = "Sample", onValueChange = {})
}

جمع الأجزاء معًا

عدّاد قابل لإعادة الاستخدام، يمتلك العنصر الأب فيه قيمة count ويكون الزر بلا حالة.

@Composable
fun CounterButton(count: Int, onIncrement: () -> Unit) {
    Button(onClick = onIncrement) {
        Text(text = "Count: $count")
    }
}

@Composable
fun Screen() {
    var count by remember { mutableStateOf(0) }
    CounterButton(count = count, onIncrement = { count++ })
}

تحقق سريع

عند رفع الحالة، ما الشيئان اللذان يكشف عنهما العنصر composable البلا حالة عادةً؟

مراجعة

رفع الحالة:

  • انقلوا الحالة إلى الأعلى، إلى المستدعي، واجعلوا العنصر الابن بلا حالة.
  • استخدموا نمط value + onValueChange.
  • الحالة إلى الأسفل، والأحداث إلى الأعلى — تدفق بيانات أحادي الاتجاه.
  • ارفعوا الحالة إلى أدنى سلف مشترك يحتاج إليها.

الأسئلة الشائعة

هل درس «رفع الحالة» مجاني؟

نعم — نص درس «رفع الحالة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Android Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Android Academy 4 دروس في المجموع.

ماذا ستتعلم في «رفع الحالة»؟

ارفع الحالة لإنشاء composables قابلة لإعادة الاستخدام تتمرن على Android Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Android Academy؟

لا تُشترط خبرة سابقة. Android Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «رفع الحالة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Android Academy هذا؟

نعم. كل درس في Android Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الحالة باستخدام remember وmutableStateOf
  2. شرح إعادة التركيب
  3. رفع الحالة
  4. rememberSaveable
← العودة إلى Android Academy