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

Time:02-11

The documentation says:

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.

When I do that with this code, I get an error: A value of type 'String?' can't be returned from the method 'amethod' because it has a return type of Future < String>?.

Why is it giving that error and what is the correct way to return a non-void value from an async function? Thanks.

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

CodePudding user response:

Your function wants to return variable1, which is of type String?. Since the function is asynchronous, its return type must be Future<String?>, not Future<String>?. The two are not the same:

  • A return type of Future<String>? means that the function returns either null or a Future. That Future completes to a non-nullable String.
  • A return type of Future<String?> means that the function always returns a Future, never null. That Future completes to either null or a String.

CodePudding user response:

You need change Future<String>? to Future<String?>? or Future<String?>

  • Related