无效参数:URI flutter getconnect 中未指定主机
Invalid argument(s): No host specified in URI flutter getconnect
我正在尝试使用 Get Connect 包从完全依赖于 GetX 的 flutter 应用程序中进行 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);
});
方法 onInit
没有被调用,这就是 baseUrl 没有被初始化的原因。
当您使用 Get.put(Controller()) 注入依赖项时,将调用方法 'onInit';进入小部件树。
所以,
OnBoardingProvider onBoardingProvider = Get.put(onBoardingProvider());
onBoardingProvider.getOnBoarding().then((value) {
print(value.body);
});
我正在尝试使用 Get Connect 包从完全依赖于 GetX 的 flutter 应用程序中进行 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);
});
方法 onInit
没有被调用,这就是 baseUrl 没有被初始化的原因。
当您使用 Get.put(Controller()) 注入依赖项时,将调用方法 'onInit';进入小部件树。
所以,
OnBoardingProvider onBoardingProvider = Get.put(onBoardingProvider());
onBoardingProvider.getOnBoarding().then((value) {
print(value.body);
});