Я хочу получить некоторые данные для вывода в список с помощью dio get. Во Flutter это оболочка контроллера getX.
Вот код, в котором есть проблема. Я пробовал много способов, например
используйте DioExceptionType, чтобы выявить конкретную проблему, и используйте DioException.statuscode. Однако ошибку по-прежнему не удается обнаружить.
class JemaatController extends GetxController {
RxList<JemaatJSON> jemaat = RxList();
RxBool isListViewScrollToTheDown = false.obs;
RxBool isLoading = true.obs;
RxBool isInternetConnect = true.obs;
final deviceStorage = GetStorage();
var url = "${ConfigBack.apiAdress}/admin/jemaat/";
var itemController = ItemScrollController();
getJemaat() async {
var response = await DioService().getMethod(url);
isLoading.value = true;
try {
if (response.statusCode == 200) {
response.data.forEach((element) {
jemaat.add(JemaatJSON.fromJson(element));
});
}
Future.delayed(const Duration(seconds: 1), () {
isLoading.value = false;
});
} catch (e) {
isLoading.value = false;
if (e is DioException) {
if (e.response?.statusCode == 401) {
FilemonHelperFunctions.showSnackBar(
"Waktu sesi telah berakhir silahkan Re-Log");
deviceStorage.write('user_login', false);
deviceStorage.write('IsFirstTime', false);
print(deviceStorage.read('user_login'));
print(deviceStorage.read('IsFirstTime'));
deviceStorage.remove('usertoken');
deviceStorage.remove('userC');
NavigationAdmin().toMain();
if (e.type == DioExceptionType.connectionError) {
FilemonHelperFunctions.showSnackBar(
"Koneksi bermasalah, ini bukan pada perangkat anda");
}
}
}
}
}
remJemaat() async {
jemaat.clear();
}
scrollListViewDownward() {
itemController.scrollTo(
index: jemaat.length - 4,
duration: const Duration(seconds: 2),
curve: Curves.fastOutSlowIn);
isListViewScrollToTheDown.value = true;
}
/// Scroll ListView To Up
scrollListViewUpward() {
itemController.scrollTo(
index: 0,
duration: const Duration(seconds: 2),
curve: Curves.fastOutSlowIn);
isListViewScrollToTheDown.value = false;
}
@override
void onInit() {
getJemaat();
super.onInit();
}
}
и для полученной мной ошибки это то, что отображается в консоли отладки:
E/flutter (12149): #0 DioMixin.fetch (package:dio/src/dio_mixin.dart:509:7)
E/flutter (12149): <asynchronous suspension>
E/flutter (12149): #1 DioService.getMethod.<anonymous closure> (package:MobileGKI/data/api_config.dart:102:54)
E/flutter (12149): <asynchronous suspension>
E/flutter (12149): #2 DioService.getMethod (package:MobileGKI/data/api_config.dart:102:12)
E/flutter (12149): <asynchronous suspension>
E/flutter (12149): #3 JemaatController.getJemaat (package:MobileGKI/data/crud_state/jemaat/jemaatlisting.dart:26:20)
E/flutter (12149): <asynchronous suspension>
E/flutter (12149):
Здесь используется метод dio get:
class DioService {
Future<dynamic> getMethod(String url) async {
dioUpers.Dio dio = dioUpers.Dio();
dioUpers.Options options =
dioUpers.Options(headers: HeadersCode().data(), method: "GET");
return await dio.get(url, options: options).then((response) {
return response;
});
}`
Не беспокойтесь об одном из '}' в DioService, это не весь скрипт. и для заголовка
class HeadersCode {
final deviceStorage = GetStorage();
data() {
Map<String, dynamic> headers = {
'Authorization': 'Bearer ${deviceStorage.read("usertoken")}',
'Content-Type': 'application/json',
// Add more headers if needed
};
return headers;
}
}
Как я могу уловить ошибку?





Вам также нужно поместить вызов в блок try:
try {
var response = await DioService().getMethod(url);
isLoading.value = true;
if (response.statusCode == 200) {
response.data.forEach((element) {
jemaat.add(JemaatJSON.fromJson(element));
});
}
Если что-то пойдет не так, catch блок будет выполнен.