我正在尝试使用获取连接包从完全依赖于GetX的颤振应用程序中进行API调用。
下面是正在使用的代码:
class OnBoardingProvider extends GetConnect {
@override
void onInit() {
httpClient.baseUrl = 'https://www.my_domain_name.com/';
httpClient.addRequestModifier((request) {
request.headers['lang'] = Get.locale.languageCode;
return request;
});
if (UserModelProvider().checkForLogin()) {
httpClient.addAuthenticator((request) {
String token = UserModelProvider().getToken();
request.headers['Authorization'] = "Token $token";
return request;
});
}
super.onInit();
}
Future<List<dynamic>> getOnBoarding() async {
final response = await get('static-pages/api/on_boarding/');
return response.body;
}但它总是让我看到错误
Unhandled Exception: Invalid argument(s): No host specified in URI static-pages/api/on_boarding/这意味着行httpClient.baseUrl = ...没有影响代码..。或者是我说错了!!
更新
当我调用函数时,我以这种方式调用OnBoardingProvider实例:
OnBoardingProvider().getOnBoarding().then((value) {
print(value.body);
});发布于 2022-01-27 12:17:03
方法onInit没有被调用,这就是为什么baseUrl没有被初始化。
当您使用onInit(Controller());将依赖项注入小部件树时,将调用‘Get.put’方法。
所以,
OnBoardingProvider onBoardingProvider = Get.put(onBoardingProvider());
onBoardingProvider.getOnBoarding().then((value) {
print(value.body);
});更多关于GetX中的深度注射和获取连接的信息
https://stackoverflow.com/questions/70877033
复制相似问题