没有 return 语句的函数在 Flutter 中是否总是 return null?
Does a function without a return statement always return null in Flutter?
以下函数的 return 类型是 Future<File?>
并且如果选择器没有 return a,编译器不会抱怨没有 return 值图片.
static Future<File?> takeImage() async {
PickedFile? pickedFile = await ImagePicker().getImage(source: ImageSource.camera);
if (pickedFile != null) {
print('PHOTO TAKEN');
return File(pickedFile.path);
} else {
print('NO PHOTO TAKEN');
}
}
如果没有拍照片,我必须 return null
不是更有意义吗?
没有 return 语句的方法是否总是 return 空?
上面的例子暗示了它,像这样简单的东西也可以编译。
static String? s() {}
有人能解释一下这是怎么回事吗?
感谢@pskink 为我指明了正确的方向。
直接来自the documentation:
Return values
All functions return a value. If no return value is specified, the statement return null; is implicitly appended to the function body.
Does a method without a return statement always return null?
是的,这是一个简单的例子
Future<void> main() async {
var str = await start();
print(str);
}
Future<String> start() async {
await Future.delayed(Duration(seconds: 2));
}
输出:
null
将其粘贴到 dartpad 中以查看效果:)
以下函数的 return 类型是 Future<File?>
并且如果选择器没有 return a,编译器不会抱怨没有 return 值图片.
static Future<File?> takeImage() async {
PickedFile? pickedFile = await ImagePicker().getImage(source: ImageSource.camera);
if (pickedFile != null) {
print('PHOTO TAKEN');
return File(pickedFile.path);
} else {
print('NO PHOTO TAKEN');
}
}
如果没有拍照片,我必须 return null
不是更有意义吗?
没有 return 语句的方法是否总是 return 空?
上面的例子暗示了它,像这样简单的东西也可以编译。
static String? s() {}
有人能解释一下这是怎么回事吗?
感谢@pskink 为我指明了正确的方向。
直接来自the documentation:
Return values
All functions return a value. If no return value is specified, the statement return null; is implicitly appended to the function body.
Does a method without a return statement always return null?
是的,这是一个简单的例子
Future<void> main() async {
var str = await start();
print(str);
}
Future<String> start() async {
await Future.delayed(Duration(seconds: 2));
}
输出:
null
将其粘贴到 dartpad 中以查看效果:)