Лучший способ продемонстрировать это - простой пример.
У меня есть объект SomeObject
с одним методом username
.
Я сделал 2 экземпляра:
aeonObject
, что не null
someOtherObject
, что null
class SomeObject {
String username() => "aeon";
}
void main() {
final aeonObject = SomeObject();
print(aeonObject.username());
SomeObject someOtherObject;
print(someOtherObject.username());
}
Если я выполню этот фрагмент, вы увидите следующий вывод.
Программа потерпит крах, потому что мы попытались выполнить метод по ссылке null
.
dart lib / main.dart lib / main.dart: Предупреждение: интерпретировать это как URI пакета, 'package: sample / main.dart'.
aeon
Необработанное исключение: NoSuchMethodError: Theметод 'username' был вызван для null.
Получатель: null Пробный вызов: username ()
Однако, если я вызываю оператор print
с ?.
aka Conditional member access operator
.
print(someOtherObject?.username());
Вместо этого мы получаем.
null