我正在使用Dio调用api。我的 API 网址是这个
class NetworkRepository {
Future<String> getRequest(String url) async {
var dio = Dio();
Response response = await dio.get(url);
return json.encode(response.data);
}
dynamic requestInterceptor(RequestOptions options) async {
return options;
}
}
我在我的小部件中调用getRequest(String url)
,
Future<String> getProjects() async {
await NetworkRepository().getRequest(projects).then((onValue) {
var dataConvertedToJSON = json.decode(onValue);
AndroidProjectModel model = AndroidProjectModel.fromJson(dataConvertedToJSON);
print(model.toString()); //DOES NOT PRINT ANYTHING
});
return 'success';
}
我把dataConvertedToJSON
传递到AndroidProjectModel.fromJson(dataConvertedToJSON)
,它不会重新运行任何东西。 我正在使用此工具将 JSON 转换为模型。
await
和then
子句可能无法协同工作。尝试类似下面的操作。
var jsonResponse = await NetworkRepository().getRequest(projects);
var dataConvertedToJSON = json.decode(onValue);
AndroidProjectModel model = AndroidProjectModel.fromJson(dataConvertedToJSON);
print(model.toString());
或
删除await
并仅使用then
处理程序。
使用 try..捕获,可能是作品
try {
final response = await Dio().get(url);
dynamic jsonResponse = response.data;
print("response body :: $jsonResponse");
}
on DioError catch(error) {
print('Error Details :: ${error.message}');
dynamic jsonResponse = error.response.data ?? " ";
print("response body :: $jsonResponse");
}