Menu
Coddy logo textTech

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

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

challenge icon

Задание

Легко

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

Implement class UserProfile со следующими элементами:

  1. Non-nullable properties (всегда должны иметь значение):
    • id типа int
    • createdDate типа String
  2. Nullable properties (могут быть 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