didvan-app/lib/services/swot_service.dart

52 lines
1.4 KiB
Dart

// ignore_for_file: avoid_print
import 'dart:convert';
import 'package:didvan/models/home_page_content/swot.dart';
import 'package:didvan/services/network/request.dart';
import 'package:didvan/services/network/request_helper.dart';
import 'package:http/http.dart' as http;
class SwotService {
static Future<List<SwotItem>> fetchSwotItems({
int page = 0,
int size = 10,
String title = '',
}) async {
final uri = Uri.parse('${RequestHelper.baseUrl2}/api/swot').replace(
queryParameters: {
'page': page.toString(),
'size': size.toString(),
if (title.isNotEmpty) 'title': title,
},
);
print("Requesting SWOT URL: $uri");
final response = await http.get(
uri,
headers: {
'Authorization': 'Bearer ${RequestService.token}',
},
);
print("Status Code: ${response.statusCode}");
final decodedBody = utf8.decode(response.bodyBytes);
// print("Decoded Response Body: $decodedBody");
if (response.statusCode == 200) {
final jsonData = json.decode(decodedBody);
if (jsonData['content'] == null || jsonData['content'] is! List) {
throw Exception('The data structure is wrong.');
}
final List<dynamic> items = jsonData['content'];
return items.map((e) => SwotItem.fromJson(e)).toList();
} else {
throw Exception(
'Error receiving data - statusCode: ${response.statusCode}');
}
}
}