import 'dart:convert'; // Importa el paquete para trabajar con JSON. import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:primer_practica/src/http_api/category_service.dart'; import 'package:primer_practica/src/models/categoryModel.dart'; class CategoryController { final Connectivity _connectivity = Connectivity(); // Crea una instancia de Connectivity para verificar el estado de la red. Future> getCategories() async { // Inicializa la respuesta por defecto. Map mapResp = { 'ok': false, 'message': 'No hay categorias', 'data': null }; // Verifica la conectividad. ConnectivityResult connectivityResult = (await _connectivity.checkConnectivity()) as ConnectivityResult; // Si hay conexión a internet. if (connectivityResult != ConnectivityResult.none) { if (connectivityResult == ConnectivityResult.wifi || connectivityResult == ConnectivityResult.mobile) { CategoryService categoryApi = CategoryService(); // Crea una instancia de CategoryApi. Map respGet = await categoryApi.getCategories(); // Obtiene las categorías desde la API. // Si la respuesta de la API es exitosa. if (respGet['statusCode'] == 200) { try { var decodeResp = json.decode(respGet['body']); // Decodifica la respuesta JSON. List listCategories = CategoryModel.fromJsonArray(decodeResp['data']); // Convierte los datos en una lista de categorías. mapResp['ok'] = true; // Marca la operación como exitosa. mapResp['message'] = "${listCategories.length} categorias encontradas"; // Actualiza el mensaje con el número de categorías encontradas. mapResp['data'] = listCategories; // Asigna los datos de las categorías a la respuesta. } catch (e) { mapResp['message'] = "Error en operador $e"; // Captura y asigna cualquier error durante la decodificación. } } else { mapResp['message'] = "${respGet['body']}"; // Asigna el mensaje de error de la API a la respuesta. } } } return mapResp; // Retorna la respuesta } }