resolve method
Resolves and returns the image data.
Implementation
@override
Future<ImageData> resolve() async {
final client = HttpClient();
try {
final request = await client.getUrl(Uri.parse(url));
headers.forEach((name, value) => request.headers.add(name, value));
final response = await request.close();
if (response.statusCode < 200 || response.statusCode >= 300) {
throw Exception('Failed to load image: HTTP ${response.statusCode}');
}
final builder = BytesBuilder(copy: false);
await for (final chunk in response) {
builder.add(chunk);
}
final bytes = builder.takeBytes();
final decoded = img.decodeImage(bytes);
if (decoded == null) {
throw Exception('Failed to decode image: $url');
}
return ImageData(decoded);
} finally {
client.close(force: true);
}
}