'String?' 类型的值不能被 return 编辑,因为函数具有 return 类型的 'Future<String>?'

A value of type 'String?' can't be returned because function has return type of 'Future<String>?'

The documentation 说:

If the function has a declared return type, then update the type to be Future<T>, where T is the type of the value that the function returns.

当我使用此代码执行此操作时,出现错误:无法从方法 [=30] 中 return 编辑“String?”类型的值=] 因为它有一个 return 类型的 Future < String>?.

为什么会出现该错误?从 async 函数中 return 一个非空值的正确方法是什么?谢谢。

class Demo{
  
 Future<String>? amethod() async{
 String? variable1;
   
   //await ...
   
  return variable1;    
 }
}

您需要将 Future<String>? 更改为 Future<String?>?Future<String?>

您的函数想要 return variable1,类型为 String?。由于该函数是异步的,它的 return 类型必须是 Future<String?>,而不是 Future<String>?。两者相同:

  • A return 类型的 Future<String>? 表示函数 return 是 nullFutureFuture 完成 non-nullable String.
  • A return 类型的 Future<String?> 意味着函数总是 return 是 Future,从不 nullFuture 完成为 nullString