如何解决Flutter 中没有 return 语句的函数是否总是返回 null?
以下函数的返回类型是 Future<File?>
,但是如果选择器没有返回图片,编译器不会抱怨没有返回值。
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');
}
}
如果没有拍到照片,我不得不返回 null
不是更有意义吗?
没有 return 语句的方法总是返回 null 吗?
上面的例子很好地表明了这一点,像这样简单的东西也可以编译。
static String? s() {}
有人可以澄清发生了什么吗?
解决方法
感谢@pskink 为我指明了正确的方向。
直接来自the documentation:
返回值
所有函数都返回一个值。如果没有指定返回值,则语句返回null;隐式附加到函数体。
没有 return 语句的方法总是返回 null 吗?
是的,这是一个简单的例子
Future<void> main() async {
var str = await start();
print(str);
}
Future<String> start() async {
await Future.delayed(Duration(seconds: 2));
}
输出:
null
将其粘贴到 dartpad 中以查看其工作:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。