Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 飞镖回归未来<;动态>;以前铸造为与函数不同的类型_Dart - Fatal编程技术网

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;
}