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

ملخص - التعامل مع الـ 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. الطريقة: <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! (باستخدام معامل تأكيد عدم القيمة الخالية)
    • تعيد القيمة الحالية لـ 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 عبر الإنترنت