Menu
CoddyTech

Повторение - Безопасная обработка 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. Метод: 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! (используя оператор утверждения ненулевого значения)
    • Возвращает текущее значение 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