Menu
CoddyTech

ملخص - التعامل مع الـ Null بأمان

جزء من قسم الأساسيات في رحلة Dart على Coddy. الدرس 82 من 94.

challenge icon

التحدي

سهل

أنت تبني نظامًا للملفات الشخصية للمستخدمين في تطبيق للهواتف المحمولة. أنشئ صنف UserProfile يوضح فهمك لميزات أمان القيم الخالية في Dart.

نفّذ صنفًا باسم UserProfile يتضمن ما يلي:

  1. خصائص غير قابلة للقيم الخالية (يجب أن تكون لها قيمة دائمًا):
    • id من النوع int
    • createdDate من النوع String
  2. خصائص قابلة للقيم الخالية (يمكن أن تكون قيمتها null عند التهيئة):
    • name من النوع String?
    • email من النوع String?
    • age من النوع int?
  3. خاصية تُهيّأ لاحقًا:
    • displayName من النوع String، وتُعلَن باستخدام الكلمة المفتاحية late
  4. المُنشئ:
    • يقبل id وcreatedDate كمعاملين مطلوبين
    • يهيّئ displayName إلى "Guest"
  5. الطريقة: void printProfile() تطبع الملف الشخصي للمستخدم بالتنسيق التالي:

    User Profile:
    ID: <id>
    Created: <createdDate>
    Name: <name or 'Not provided'>
    Email: <email or 'Not provided'>
    Age: <age or 'Not provided'>
    Display Name: <displayName>
    -------------------
  6. الطريقة: void updateEmail(String? newEmail)
    • تحدّث الخاصية email بالقيمة الجديدة.
  7. الطريقة: String getDisplayName()
    • إذا لم تكن name تساوي null، فعيّن displayName = name! (باستخدام عامل التأكيد على عدم كون القيمة null)
    • تُعيد القيمة الحالية لـ displayName

مهم: بعد تحديث الخاصية name، يجب أن تستدعي getDisplayName() لتحديث الحقل displayName قبل طباعة الملف الشخصي مرة أخرى.

أكمل الشيفرة لإنشاء ملف شخصي وتحديثه وعرض المعلومات كما هو موضح في الناتج المتوقع.

جرّب بنفسك

void main() {
  // أنشئ ملفًا شخصيًا للمستخدم
  final profile = UserProfile(1, 'today');
  
  // اطبع الملف الشخصي الأولي
  profile.printProfile();
  
  // حدّث الملف الشخصي
  profile.name = 'John Doe';
  profile.updateEmail('john@example.com');
  profile.age = 30;
  
  // حدّث اسم العرض واطبع الملف الشخصي المحدّث
  profile.getDisplayName(); // استدعِ هذا لتحديث displayName
  profile.printProfile();
}

class UserProfile {
  // TODO: أضف الخصائص (id, createdDate, name, email, age, displayName)
  
  // TODO: أنشئ المُنشئ
  
  // TODO: نفّذ الدالة printProfile()
  
  // TODO: نفّذ الدالة updateEmail()
  
  // TODO: نفّذ الدالة getDisplayName()
}

جميع دروس الأساسيات

تدرّب بنفسك: مترجم Dart عبر الإنترنت