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()
}

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

Потренируйтесь самостоятельно: Онлайн-компилятор Dart