Code snippet A is working, but not snippet B. I check variable "image"s data type with print(), both A and B’s image (variable) has a datatype (XFile), not a Null. But B is still not working….
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
Answers
image
can benull
, In CodeA
you check fornullable
value so you won’t getexception
, but in codeB
you are using!
onnullable
value which is wrong.If you look for short form you can try this:
The meaning of your code snippet A is:
If the
image
variable is null it will return null otherwise it will return theimage
variable.The meaning of your code snippet B is:
It returns the
image
variable, although theimage
variable may be null.If you use code snippet B, you use
!
and change the variable from a nullable type to a non-nullable type, and the variable is actually empty (has no value) and you can’t use.path
so it returns an error.