Всегда ли функция без оператора return возвращает null во Flutter?

Тип возврата следующей функции: 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() {}

Может кто-нибудь прояснить, что происходит?

2 ответа

Спасибо @pskink за то, что указал мне в правильном направлении.

Прямо из документации :

Возвращаемые значения
Все функции возвращают значение. Если возвращаемое значение не указано, оператор возвращает null; неявно добавляется к телу функции.

Всегда ли метод без оператора return возвращает значение null?

Да вот простой пример

      Future<void> main() async {
  var str = await start();
  print(str);
}

Future<String> start() async {
  await Future.delayed(Duration(seconds: 2));
}

выход:

      null

Вставьте его в дартпад, чтобы увидеть, как он работает :)

Другие вопросы по тегам