Flutter, dart: в чем разница между этими фрагментами кода?
Фрагмент кода A работает, но фрагмент B не работает. Я проверяю тип данных переменной "image" с помощью print(), изображение (переменная) A и B имеет тип данных (XFile), а не Null. Но B все еще не работает....
final XFile? image = await _picker.pickImage(source: ImageSource.gallery);
print(image);
// Code snippet A
if (image == null) return null;
return File(image.path);
// Code snippet B
return File(image!.path);
2 ответа
Смысл вашего фрагмента кода A:
Если переменная имеет значение null, она вернет null, в противном случае она вернет переменную.
Смысл вашего фрагмента кода B:
Он возвращает переменную, хотя
Если вы используете фрагмент кода B, вы используете
image
возможноnull
, В кодеA
вы проверяете значение, поэтому вы не получитеexception
, но в кодеB
ты используешь!
наnullable
значение, которое неверно.
Если вы ищете короткую форму, вы можете попробовать это:
return image == null ? null : File(image.path);