// Extensions and utilities for PackManager import 'dart:typed_data'; import 'dart:io'; import 'dart:convert'; import 'package:image/image.dart'; import 'pack_manager.dart'; enum _ImageSize { big, medium, small, extraSmall, } extension on _ImageSize { int get width => switch (this) { _ImageSize.big => 1024, _ImageSize.medium => 512, _ImageSize.small => 320, _ImageSize.extraSmall => 192, }; } extension CoverStringExt on String? { Future get base64Image => _base64Image(); Future _base64Image([_ImageSize? size]) async { if (this == null) return ''; try { final bytes = _getById(this!, 'covers', size); return base64Encode(bytes); } catch (e) { return ''; } } Uint8List _getById(String id, String type, _ImageSize? size) { try { return File('${PackManagerUtils.assetsDirectory.path}/$type/$id') .readAsBytesSync(); } catch (e) { print('Error loading image $id of type $type: $e'); return Uint8List(0); } } Future get smallBase64Image => _base64Image(_ImageSize.small); Future get extraSmallBase64Image => _base64Image(_ImageSize.extraSmall); Future get mediumBase64Image => _base64Image(_ImageSize.medium); Future get bigBase64Image => _base64Image(null); }