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 中以查看其工作:)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...