Всегда ли функция без оператора 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
Вставьте его в дартпад, чтобы увидеть, как он работает :)