في هذه الصفحة
المقدمة
واحدة من المزايا الجديدة اللي نزلت في لغة Dart 3 هي الـ Records، والـ Record واحدة من الـ Data Structure اللي بتتميز انها بتقدر تخزن عدد ثابت من القيم من أنواع مختلفة.
الميزة دي بتسهل حاجات كتير، خصوصًا في الحالات اللي بيكون استخدام الـ Class فيها مبالغ فيه. بمعنى إنك مش لازم تروح وتعمل Class كامل مخصص لكل حاجة، ممكن تستخدم الـ Records عشان توفر وقتك وجهدك.
Record in Flutter
عندنا نوعين اتنين من الـ Records ألا وهم الـ Positional Records والـ Named Records.
النوع الأول : Positional Records
في المثال ده، عملنا record من خلال قوسين وأدخلنا القيم بشكل مفصول. الـ record هنا بيحتوي على متغيرين مختلفين. بنستدعي القيم باستخدام $ وأول قيمة بيكون رقمها 1، بعكس باقي الـ data structures اللي بتبدأ من الصفر.
النوع الثاني : Named Records
هنا ممكن نستدعيهم من خلال أسمائهم مباشرة.
وكمان لو عايز تخليهم يمثلوا الـ return بتاع الدالة، بيكون شكلهم كالتالي:
الـ Positional:
الـ Named:
مثال أكبر:
تعالوا ناخد مثال أكبر لاستخدام الـ Records في تطبيق حقيقي
قارن الكود ده بالكود اللي جاي واستنتج ازاي ممكن تكون الـ Record أداة قيمة لكتابة كود أنضف وأبسط، خاصة لما تستخدمها في المكان المناسب.
تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀
النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉
هنا استخدمنا الـ record وجمعنا الـ user والـ token بكل بساطة في ريكورد واحد. بمجرد القراءة، بنقدر نفهم الدالة دي المفروض ترجع إيه بالظبط.
ليه نستخدم Records؟
- البساطة: بتبسط التعامل مع البيانات اللي محتاج تجمعها بشكل بسيط.
- سهولة القراءة: وده واضح أوي مع استخدام named records.
- خفيفة: بتوفر عليك الـ boilerplate قد يحدث مع استخدام class أو data structures تانية.
حدود الاستخدام:
- لو بتتعامل مع داتا معقدة بتكون محدودة وبتحتاج classes.
- مفيش دوال فيها زي classes هي مجرد هياكل بيانات.
في الختام
الـ Records في Dart أداة قوية بتوفر سهولة ووضوح في تطوير تطبيقات Flutter. باستخدام records، تقدر تبسط الكود بتاعك من غير ما تضطر تعمل كلاس لكل حاجة صغيرة. سواء كنت بتبعت قيم متعددة بين الفانكشنز أو بتشتغل مع الـ UI components في Flutter، الـ records بتوفر حل أنيق لإدارة البيانات المرتبطة بشكل خفيف وسلس.