2024-12-03 16:42:54 +04:00
|
|
|
|
import 'dart:convert';
|
|
|
|
|
import 'package:http/http.dart' as http;
|
2024-12-10 13:06:37 +04:00
|
|
|
|
import '../models/character.dart';
|
2024-12-03 16:42:54 +04:00
|
|
|
|
|
|
|
|
|
const String baseUrl = 'http://192.168.1.83:5000'; // IP-адрес вместо localhost
|
|
|
|
|
|
|
|
|
|
class CharacterService {
|
|
|
|
|
Future<List<Character>> getCharacters({String search = ''}) async {
|
|
|
|
|
try {
|
2024-12-10 13:04:11 +04:00
|
|
|
|
// Формируем URL с параметром поиска
|
|
|
|
|
final uri = Uri.parse('$baseUrl/characters?search=$search');
|
2024-12-03 16:42:54 +04:00
|
|
|
|
|
2024-12-10 13:04:11 +04:00
|
|
|
|
// Выполняем HTTP-запрос
|
|
|
|
|
final response = await http.get(uri);
|
|
|
|
|
|
|
|
|
|
// Логирование данных для отладки
|
|
|
|
|
print('Response status: ${response.statusCode}');
|
|
|
|
|
print('Response body: ${response.body}'); // Выводим тело ответа для анализа
|
|
|
|
|
|
|
|
|
|
// Проверяем успешный ответ от сервера
|
2024-12-03 16:42:54 +04:00
|
|
|
|
if (response.statusCode == 200) {
|
|
|
|
|
final List<dynamic> data = json.decode(response.body);
|
2024-12-10 13:04:11 +04:00
|
|
|
|
print('Characters received: $data'); // Печать данных
|
|
|
|
|
|
|
|
|
|
// Возвращаем список объектов Character
|
2024-12-03 16:42:54 +04:00
|
|
|
|
return data.map((item) => Character.fromJson(item)).toList();
|
|
|
|
|
} else {
|
2024-12-10 13:04:11 +04:00
|
|
|
|
// Ошибка, если сервер вернул не 200 статус
|
|
|
|
|
print('Error: Server responded with status ${response.statusCode}');
|
|
|
|
|
throw Exception('Ошибка загрузки данных с сервера');
|
2024-12-03 16:42:54 +04:00
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
2024-12-10 13:04:11 +04:00
|
|
|
|
// Обработка ошибок при выполнении запроса
|
|
|
|
|
print('Error fetching characters: $e');
|
2024-12-03 16:42:54 +04:00
|
|
|
|
throw Exception('Не удалось загрузить персонажей');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|