问题描述
我在一个flutter项目中,使用异步请求api,并且用async函数封装,返回的是一个Future<ClassResponseData>
Future<ClassResponseData> getTimeTableFromStudentID(
String studentId, String token) async {
Options options = Options(headers: {HttpHeaders.authorizationHeader: token});
Response response = await Dio()
.post(
"${StackConfig.ApiUrlHead}/api/pc/${StackConfig.ApiVersion}/timetables/getTimeTableFromStudentID",
data: {"student_id": studentId, "year": "2020-2021", "semester": 1},
options: options)
.catchError((e) {
print(e);
});
if (response != null) {
return ClassResponseData.fromJson(response.data);
} else {
return null;
}
}
我如何获取到Future<ClassResponseData>中的ClassResponseData,并赋值给一个变量?
尝试过的方法
创建一个类,用于获取Future里的数据
class ResponseDataFromAsync {
ClassResponseData _data;
String studentId;
String token;
ResponseDataFromAsync(this.studentId, this.token);
set Class_data(ClassResponseData value) {
//报错:Expected a value of type 'ClassResponseData', but got one of type '_Future<ClassResponseData>'
//this._data = setData(this.studentId, this.token) as ClassResponseData;
//报错:this._data=null;
setData(this.studentId, this.token).then((data) {
this._data = data;
});
}
ClassResponseData get Class_data {
return _data;
}
Future<ClassResponseData> setData(String studentId, String token) async {
return await getTimeTableFromStudentID(studentId, token);
}
}
还是无法解决
###虽然对 Dart
不是很熟,但是猜想和 JS
差不多:
Future<ClassResponseData> setData(String studentId, String token) async {
this._data = await getTimeTableFromStudentID(studentId, token);
}
不过此时 setData
没有返回值,所以要修改 <ClassResponseData>
这个类型!
ClassResponseData result = await setData(String studentId, String token);
或者
ClassResponseData result;
setData(String studentId, String token).then(ClassResponseData data) {
result = data;
};