如何使用 Retrofit 包访问 http 调用中的状态代码?

How to access status code in a http call using Retrofit package?

retrofit 需要一个 dio 对象,所以如何访问该 dio 对象来访问状态代码,如 200 或类似的东西,

改造基地class

@RestApi(baseUrl: 'url')
abstract class ApiService {
  factory ApiService({Dio dio, String baseUrl}) {
    return _ApiService(dio, baseUrl: baseUrl);
  }

  @GET('/user')
  Future<List<Plant>> getUser(
    @Query('userId') String id,
  );
}

存储库

class Repository {
  Dio dio = Dio();
  ApiService apiService;

  Repository() {
    dio = Dio();
    dio.interceptors.add(HeaderInterceptor());
    apiService = ApiService(
        dio: dio,
       baseUrl: 'http://10.0.2.2:8080/api',
        );
  }



  Future<User> getFloorPlanById(String id) async {
    try {
      final user = await apiService.getUser(id);
      return user;
    } on Exception catch (e) {
      print(e.toString());
      return null;
    }
  }
}

我想在这里访问状态代码,以便我可以根据状态代码显示不同类型的屏幕。

如果我直接使用它,那么我必须再次调用 api,这样就没有意义了。

so 如何在这里访问状态码?

我找到了两种方法,

方法一

使用DioError

on DioError catch (e) {
      print(e.toString());

    }

此处e包含您可以使用的状态码

方法二

使用HttpResponse

使API的return类型HttpResponse调用函数

ex-:

Future<HttpResponse> getUser(
    @Query('userId') String id,
  );

结果将包含数据以及状态代码和消息