【问题标题】: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&lt;T&gt;,其中T 是函数的值的类型 返回。

当我使用此代码执行此操作时,出现错误:无法从方法“amethod”返回类型为“String?”的值,因为它的返回类型为Future &lt; String&gt;?

为什么会出现这个错误?从async 函数返回非空值的正确方法是什么?谢谢。

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

【问题讨论】:

    标签: flutter dart async-await future


    【解决方案1】:

    你的函数想要返回variable1,它的类型是String?。由于函数是异步的,它的返回类型必须是Future&lt;String?&gt;,而不是Future&lt;String&gt;?。两者相同:

    • Future&lt;String&gt;? 的返回类型意味着函数返回nullFutureFuture 完成为不可为空的 String
    • Future&lt;String?&gt; 的返回类型意味着该函数始终返回Future,而不是nullFuture 完成为 nullString

    【讨论】:

    • 非常清晰准确的解释。这是我们应该希望得到的答案。
    【解决方案2】:

    您需要将Future&lt;String&gt;? 更改为Future&lt;String?&gt;?Future&lt;String?&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-13
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多