Повторение - Безопасная обработка 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"
- Принимает
Метод:
<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Проект: Простой калькулятор
НастройкаОбъявление числа