Повторение - Безопасная обработка null
Часть раздела Основы путешествия по Dart на Coddy. Урок 82 из 94.
Задание
ЛегкоВы создаёте систему профилей пользователей для мобильного приложения. Создайте класс UserProfile, демонстрирующий ваше понимание функций безопасности null в Dart.
Реализуйте класс UserProfile со следующими элементами:
- Свойства, не допускающие null (всегда должны иметь значение):
idтипаintcreatedDateтипаString
- Свойства, допускающие null (при инициализации могут иметь значение null):
nameтипаString?emailтипаString?ageтипаint?
- Свойство с отложенной инициализацией:
displayNameтипаString, объявленное с помощью ключевого словаlate
- Конструктор:
- Принимает
idиcreatedDateкак обязательные параметры - Инициализирует
displayNameзначением"Guest"
- Принимает
Метод:
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> -------------------- Метод:
void updateEmail(String? newEmail)- Обновляет свойство
email, присваивая ему новое значение.
- Обновляет свойство
- Метод:
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()
}Все уроки раздела Основы
4Операторы, часть 2
Операторы сравненияЛогический ANDЛогический ORЛогический NOTОператоры проверки типаПовторение - Сравнения7Работа со строками
Конкатенация строкИнтерполяция строкМногострочные строкиСвойства строкОсновные методы строк10Коллекции - Основы словарей
Что такое словари?Создание словаряДоступ к значениям по ключуПары ключ-значениеПолучение размера словаряПолучение ключейПолучение значенийПроверка существования ключа13Null-безопасность в деталях
Понимание nullNullable-типыNon-nullable-типыОператор утверждения nullПоздняя инициализацияПовторение - Безопасная обработка null2Переменные и основные типы данных
Что такое переменные?СтрокиЦелые числа (int)Вещественные числа (double)Булевы значения (bool)Вывод типов с 'var'Финальные переменныеКонстантные переменныеСоглашения об именованииОсновы null-безопасностиПовторение - Объявление переменных8Поток управления - Циклы
Цикл 'for'Цикл 'while'Цикл 'do-while'Использование 'break' в циклахИспользование 'continue' в циклахИтог - Повторение кода3Операторы. Часть 1
Арифметические операторыЦелочисленное делениеОператор модуляИнкремент и декрементСокращённые присваиванияИтог - Простые вычисления6Управление потоком - Принятие решений
Оператор 'if'Оператор 'else'Оператор 'else if'Повторение - Простые решенияВложенные операторы 'if'Оператор 'switch'9Коллекции - Основы списков
Что такое списки?Создание спискаДоступ по индексуПолучение длины спискаДобавление элементовУдаление элементовПроверка, пуст ли списокИтерация по списку12Расширенные функции
Необязательные позиционные параметрыИменованные параметрыОбязательные именованные параметрыЗначения параметров по умолчаниюПовторение - Параметры функций15Проект: Простой калькулятор
НастройкаОбъявление числаПотренируйтесь самостоятельно: Онлайн-компилятор Dart