【问题标题】:A value of type 'String?' can't be returned because function has return type of 'Future<String>?'“字符串?”类型的值无法返回,因为函数的返回类型为 'Future<String>?'
【发布时间】:2022-02-09 10:46:14
【问题描述】:
The documentation 说:
如果函数具有声明的返回类型,则将类型更新为
为Future<T>,其中T 是函数的值的类型
返回。
当我使用此代码执行此操作时,出现错误:无法从方法“amethod”返回类型为“String?”的值,因为它的返回类型为Future < String>?。
为什么会出现这个错误?从async 函数返回非空值的正确方法是什么?谢谢。
class Demo{
Future<String>? amethod() async{
String? variable1;
//await ...
return variable1;
}
}
【问题讨论】:
标签:
flutter
dart
async-await
future
【解决方案1】:
你的函数想要返回variable1,它的类型是String?。由于函数是异步的,它的返回类型必须是Future<String?>,而不是Future<String>?。两者不相同:
-
Future<String>? 的返回类型意味着函数返回null 或Future。 Future 完成为不可为空的 String。
-
Future<String?> 的返回类型意味着该函数始终返回Future,而不是null。 Future 完成为 null 或 String。
【解决方案2】:
您需要将Future<String>? 更改为Future<String?>? 或Future<String?>