| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import 'dart:io';
- import 'package:http/http.dart' as http;
- import 'package:path/path.dart' as p;
- import 'package:path_provider/path_provider.dart';
- import '../database/daos/parametri_dao.dart';
- import '../core/constants.dart';
- class ImageService {
- final ParametriDao _parametriDao;
- ImageService(this._parametriDao);
- String? token;
- Future<String?> getBaseUrl() => _parametriDao.read(AppConstants.kUrlParam);
- Map<String, String> get _headers {
- final headers = <String, String>{
- 'Accept': 'application/json',
- };
- final t = token;
- if (t != null && t.isNotEmpty) {
- headers['Authorization'] = 'Bearer $t';
- }
- return headers;
- }
- String get _imageDir => 'PowerAge/images';
- Future<File?> getImage(String codArticolo, {bool thumb = true}) async {
- final dir = await getApplicationDocumentsDirectory();
- final imageDir = Directory(p.join(dir.path, _imageDir));
- if (!await imageDir.exists()) await imageDir.create(recursive: true);
- final suffix = thumb ? '_thumb' : '';
- final localFile = File(p.join(imageDir.path, '$codArticolo$suffix.jpg'));
- if (await localFile.exists()) return localFile;
- try {
- final baseUrl = await getBaseUrl();
- if (baseUrl == null || baseUrl.isEmpty) return null;
- final endpoint = thumb
- ? '/rest/articoli/image/thumb/$codArticolo'
- : '/rest/articoli/image/$codArticolo';
- final response = await http.get(
- Uri.parse('$baseUrl$endpoint'),
- headers: _headers,
- ).timeout(const Duration(seconds: 30));
- if (response.statusCode == 200 && response.bodyBytes.isNotEmpty) {
- await localFile.writeAsBytes(response.bodyBytes);
- return localFile;
- }
- } catch (_) { }
- return null;
- }
- Future<String?> getImageUrl(String codArticolo, {bool thumb = true}) async {
- final baseUrl = await getBaseUrl();
- if (baseUrl == null || baseUrl.isEmpty) return null;
- final suffix = thumb ? '/thumb' : '';
- return '$baseUrl/rest/articoli/image$suffix/$codArticolo';
- }
- }
|