在Dart中返回Future时为Null [英] Null while returning a Future in Dart
问题描述
我有两个类,一个 user_api_manager
和一个 base_api_manager
。从 user_api_manager
中,我调用 base_api_manager
的 get
方法一个http get请求并返回 Future< String>
。已执行 get
请求,但是我没有将结果传递给我的 user_api_manager
类。回调结果始终为空。
I have two classes, a user_api_manager
and a base_api_manager
. From user_api_manager
i call the get
method of base_api_manager
which performs an http get request and returns a Future<String>
. The get
request is performed but i am not pass the result to my user_api_manager
class. The callback result is always null.
这是我的 user_api_manager.dart
static Future<Map<String,dynamic>> forgotPasswordAPI(String email) async{
String url = Constants.BASE_URL + Constants.FORGOT_PASSWORD_URL + email;
await BaseApiManager.get(url: url).then((val) {
var response = JSON.decode(val);
var status = response['status'];
String message = '';
print(response);
switch (response['status']) {
case Constants.SUCCESS:
message = Constants.SUCCESS_RESPONSE;
break;
case Constants.SERVER_ERROR:
message = Constants.SERVER_ERROR_MESSAGE;
break;
case Constants.UNAUTHORISED:
message = Constants.UNAUTHORISED_MESSAGE;
break;
}
return {'status':status,'message':message};
});
}
这是我的 base_api_manager.dart
static Future<String> get({url : String,
parameters : Map ,
headers: Map }) async {
var client = new http.Client();
Map<String,dynamic> resultJSON;
final c = new Completer();
await client.get(url).then((response) { //response is always null
resultJSON = {
'status' : response.statusCode,
'body' : JSON.decode(response.body)
};
c.complete(resultJSON.toString());
return c.future;
});
}
如何解决此问题?
推荐答案
将返回c.future移到响应处理之外,即您想从get中返回它,否则将返回空。
Move the return c.future outside of the response processing, i.e you want to return this from your get otherwise you will return null.
这篇关于在Dart中返回Future时为Null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!