Dart 飞镖回归未来<;动态>;以前铸造为与函数不同的类型
我需要返回一些类型,如Dart 飞镖回归未来<;动态>;以前铸造为与函数不同的类型,dart,Dart,我需要返回一些类型,如Future。我附上了我的代码的简化版本。我总是遇到错误“函数'testFunc'无法返回'String'类型的值,因为它的返回类型为'Future'” 即使我执行“dynamic returnVal=text”并返回该值,我也会得到一个异常“未处理的异常: 类型“String”不是类型“Future”的子类型 导入'dart:async'; void main(列表参数)异步{ dynamic gotVal=等待testFunc(); 打印(gotVal); } Futu
Future
。我附上了我的代码的简化版本。我总是遇到错误“函数'testFunc'无法返回'String'类型的值,因为它的返回类型为'Future'”
即使我执行“dynamic returnVal=text”并返回该值,我也会得到一个异常“未处理的异常:
类型“String”不是类型“Future导入'dart:async';
void main(列表参数)异步{
dynamic gotVal=等待testFunc();
打印(gotVal);
}
Future testFunc(){
String text=“Bla”;
返回文本;
}
我可以用一个补全器来修复它,但对我来说,这似乎是错误的。这真的是使用这种补全符的唯一解决方案吗
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;
}
导入'dart:async';
void main(列表参数)异步{
dynamic gotVal=等待testFunc();
打印(gotVal);
}
Future testFunc(){
String text=“Bla”;
Completer Completer=Completer();
完成者。完成(文本);
返回completer.future;
}
您应该重写testFunc,在其定义中添加async关键字:
Future testFunc()异步{
String text=“Bla”;
返回文本;
}
这太简单了,我没注意到。非常感谢。现在我知道了异步的用途:)
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;
}