Nullable-объект в Dart
Переменная типа Post? может хранить объект класса Post
или null. Без вопросительного знака в типе null
присвоить нельзя:
class Post {
String title;
Post(this.title);
}
Создадим объект и выведем его:
Post? found = Post("note");
Post? missing = null;
print(found?.title);
print(missing);
Поле класса тоже может быть nullable. Тогда у объекта поле иногда пустое:
class Post {
String title;
Post(this.title);
Post? editor = null;
}
Создадим объект, заполним поля и проверим результат:
var boss = Post("eric");
var post = Post("note");
post.editor = boss;
print(post.editor?.title);
Прямой доступ к полю nullable-ссылки без проверки
компилятор не пропустит. Сначала нужно убедиться,
что ссылка не null, либо применить безопасный
вызов ?.:
class Post {
String title;
Post(this.title);
}
Post? post = null;
// print(post.title); // ошибка компиляции
print(post?.title);
Объявите Post? leader.
Сначала запишите объект Post, затем присвойте null.
Сделайте класс Team с полем captain
типа Post?. Создайте команду без капитана
и выведите заголовок капитана безопасным обращением.