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