Menu
Coddy logo textTech

Повторение - Безопасная обработка null

Часть раздела Основы путешествия по Dart на Coddy — урок 82 из 94.

challenge icon

Задание

Легко

Вы создаёте систему профилей пользователей для мобильного приложения. Создайте класс UserProfile, который демонстрирует ваше понимание функций null-безопасности Dart.

Реализуйте класс UserProfile со следующим:

  1. Свойства, не допускающие null (всегда должны иметь значение):
    • id типа int
    • createdDate типа String
  2. Свойства, допускающие null (могут быть 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! (используя оператор утверждения non-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()
}

Все уроки раздела Основы