flutter - 我如何从飞镖的未来获得价值并将其存储到全局变量
问题描述
我从未来的响应中分配变量类级别变量,但它将返回 null
getRequest(urlPath).then((value) => {response = value.data.toString()});
其中响应是类级别的变量值有数据但仍然响应为空
Future<Response> getRequest(String url) async {
return await m_basicDioConnection.getConnection().get(url);
}
HttpService 类
class HttpService {
BasicDioConnection m_basicDioConnection;
HttpService() {
m_basicDioConnection = new BasicDioConnection();
}
Future<Response> getRequest(String url) async {
return await m_basicDioConnection.getConnection().get(url);
}
Future<Response> postRequest(String url, String data) async {
return await m_basicDioConnection.getConnection().post(url, data: data);
}
Future<Response> putRequest(String url, String data) async {
return await m_basicDioConnection.getConnection().put(url, data: data);
}
}
class HttpServiceHandler extends HttpService {
String m_response;
set response(String resp) {
this.m_response = resp;
}
String get response {
return m_response;
}
String handleRequest(RequestEnumType method, String urlPath, String data) {
String resp;
switch (method) {
case RequestEnumType.GET:
getRequest(urlPath)
.then((value) => {this.response = value.data.toString()});
break;
case RequestEnumType.POST:
postRequest(urlPath, data)
.then((value) => {this.response = value.data.toString()});
break;
case RequestEnumType.PUT:
putRequest(urlPath, data)
.then((value) => {this.response = value.data.toString()});
break;
case RequestEnumType.DELETE:
break;
}
print(this.m_response);
return this.response;
} }
主功能
void main() {
HttpServiceHandler service = HttpServiceHandler();
String res = service.handleRequest(RequestEnumType.POST, "/api/users",
"{\"name\":\"hello\",\"job\":\"cenaCenacena\"}");
print(res);
}
打印(分辨率);打印空
解决方案
改变你的handleRequest
方法应该有效。
Future<String> handleRequest(RequestEnumType method, String urlPath, String data) {
String resp;
switch (method) {
case RequestEnumType.GET:
resp = await getRequest(urlPath);
break;
case RequestEnumType.POST:
resp = await postRequest(urlPath, data);
break;
case RequestEnumType.PUT:
resp = await putRequest(urlPath, data);
break;
case RequestEnumType.DELETE:
break;
}
this.response = resp.data.toString();
print(this.m_response);
return this.response;
}
您还需要更改此部分,如下所示:
Future<void> main() async {
HttpServiceHandler service = HttpServiceHandler();
String res = await service.handleRequest(RequestEnumType.POST, "/api/users",
"{\"name\":\"hello\",\"job\":\"cenaCenacena\"}");
print(res);
}
推荐阅读
- amazon-web-services - 将文件压缩到 aws s3 eroor
- raster - 将栅格地图合并到 CSV(带值)以创建(地理)栅格地图
- mysql - 如何将空 DateTime 对象作为参数传递给 MySQL 数据库?
- python - 如何在 Selenium/Firefox 中以私有模式访问 cookie?
- ios - 连接核心蓝牙或经典蓝牙设备是否需要 CoreLocation 框架
- django - 为什么 Django API Get 工作但 Post 不工作?
- xml - 如何在java中读取xep文件数据
- excel - 如何将 worksheetfunction.large 与数组一起使用?
- javascript - 块的响应金字塔对齐
- ios - 如何将通用协议作为函数参数传递