#dart
#dart
Вопрос:
Мне нужно вернуть некоторый тип как Future<dynamic>
. Я приложил упрощенную версию своего кода. Я всегда получаю сообщение об ошибке «Значение типа’String’ не может быть возвращено из функции’TestFunc’, потому что оно имеет возвращаемый тип ‘Future’»
Даже если я выполняю «динамический returnVal = text» и возвращаю его, я получаю исключение «Необработанное исключение: тип ‘String’ не является подтипом типа ‘Future< dynamic>’»
import 'dart:async';
void main(List<String> args) async {
dynamic gotVal = await testFunc();
print(gotVal);
}
Future<dynamic> testFunc() {
String text = "Bla";
return text;
}
Я смог исправить это с помощью завершителя, но для меня это кажется неправильным. Действительно ли это единственное решение для использования такого завершителя? :
import 'dart:async';
void main(List<String> args) async {
dynamic gotVal = await testFunc();
print(gotVal);
}
Future<dynamic> testFunc() {
String text = "Bla";
Completer completer = Completer();
completer.complete(text);
return completer.future;
}
Ответ №1:
Вы должны переписать свой TestFunc, добавив ключевое слово async в его определение:
Future<dynamic> testFunc() async {
String text = "Bla";
return text;
}
Комментарии:
1. Это было слишком просто, не заметил этого. Спасибо! Теперь я знаю, для чего нужна асинхронность 🙂