Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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

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

challenge icon

التحدي

سهل

أنت تقوم ببناء نظام لملف تعريف المستخدم لتطبيق جوال. قم بإنشاء فئة UserProfile توضح فهمك لميزات سلامة القيم الخالية (null safety) في لغة Dart.

قم بتنفيذ فئة UserProfile مع ما يلي:

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

    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. الدالة: <strong>void updateEmail(String? newEmail)</strong>
    • تقوم بتحديث خاصية email بالقيمة الجديدة.
  7. الدالة: <strong>String getDisplayName()</strong>
    • إذا لم يكن name فارغاً (null)، تقوم بتعيين displayName = name! (باستخدام عامل تأكيد القيمة غير الخالية null assertion operator)
    • تعيد القيمة الحالية لـ 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: إنشاء المنشئ (constructor)
  
  // TODO: تنفيذ طريقة printProfile()
  
  // TODO: تنفيذ طريقة updateEmail()
  
  // TODO: تنفيذ طريقة getDisplayName()
}

جميع دروس Fundamentals