Повторение - Безопасная обработка null
Часть раздела Основы путешествия по Dart на Coddy. Урок 82 из 94.
Задание
ЛегкоВы создаёте систему профилей пользователей для мобильного приложения. Создайте UserProfile class, демонстрирующий ваше понимание возможностей null-безопасности Dart.
Implement class UserProfile со следующими элементами:
- Non-nullable properties (всегда должны иметь значение):
idтипаintcreatedDateтипаString
- Nullable properties (могут быть null при инициализации):
nameтипаString?emailтипаString?ageтипаint?
- Свойство с отложенной инициализацией:
displayNameтипаString, объявленное с использованием ключевого словаlate
- Конструктор:
- Принимает
idиcreatedDateв качестве обязательных параметров - Инициализирует
displayNameзначением"Guest"
- Принимает
Метод:
<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> -------------------- Метод:
<strong>void updateEmail(String? newEmail)</strong>- Обновляет свойство
emailновым значением.
- Обновляет свойство
- Метод:
<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()
}Все уроки раздела Основы
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