1

我正在使用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 转换为模型。

4

2 回答 2

0

使用try..catch,可能有效

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");
}
于 2019-12-12T07:10:13.820 回答
0

awaitandthen子句可能无法一起使用。尝试类似以下的操作。

var jsonResponse = await NetworkRepository().getRequest(projects);
var dataConvertedToJSON = json.decode(onValue);
AndroidProjectModel model = AndroidProjectModel.fromJson(dataConvertedToJSON);
print(model.toString()); 

或者

删除await并仅使用then处理程序。

于 2019-11-22T11:41:58.423 回答