Nullable-тип ?
Знак вопроса ? после типа данных
превращает обычный тип в nullable-тип.
Это означает, что переменная такого типа
может хранить как значение своего типа,
так и значение null. Без знака ?
переменная не может принимать значение
null, и попытка присвоить его
приведет к ошибке компиляции.
Nullable-типы являются частью системы
null safety в Dart, которая помогает
избежать ошибок, связанных с неожиданным
значением null.
Синтаксис
Type? variableName;
Пример
Давайте объявим переменную типа int?
и присвоим ей значение null:
void main()
{
int? num = null;
print(num);
}
Результат выполнения кода:
null
Пример
Давайте присвоим nullable-переменной обычное значение:
void main()
{
int? num = null;
num = 5;
print(num);
}
Результат выполнения кода:
5
Пример
Давайте попробуем присвоить null
переменной без знака ? и увидим
ошибку компиляции:
void main()
{
int num = null;
print(num);
}
Результат выполнения кода:
Error: A value of type 'Null' can't be assigned to a variable of type 'int'.
Пример
Давайте объявим переменную типа String?
и проверим ее на null с помощью
оператора ==:
void main()
{
String? str = null;
if (str == null)
{
print('str is null');
}
else
{
print(str);
}
}
Результат выполнения кода:
"str is null"
Пример
Давайте используем nullable-тип в списке:
void main()
{
List<int?> res = [1, null, 3, null, 5];
print(res);
}
Результат выполнения кода:
[1, null, 3, null, 5]