fixed image loading error handling

This commit is contained in:
Thibault Deckers 2020-10-12 09:57:15 +09:00
parent 9a8f0d8606
commit 2991df5f49
3 changed files with 12 additions and 6 deletions

View file

@ -39,11 +39,13 @@ class AppIconImage extends ImageProvider<AppIconImageKey> {
Future<ui.Codec> _loadAsync(AppIconImageKey key, DecoderCallback decode) async { Future<ui.Codec> _loadAsync(AppIconImageKey key, DecoderCallback decode) async {
try { try {
final bytes = await AndroidAppService.getAppIcon(key.packageName, key.size); final bytes = await AndroidAppService.getAppIcon(key.packageName, key.size);
if (bytes == null) return null; if (bytes == null) {
throw StateError('$packageName app icon loading failed');
}
return await decode(bytes); return await decode(bytes);
} catch (error) { } catch (error) {
debugPrint('$runtimeType _loadAsync failed with packageName=$packageName, error=$error'); debugPrint('$runtimeType _loadAsync failed with packageName=$packageName, error=$error');
return null; throw StateError('$packageName app icon decoding failed');
} }
} }
} }

View file

@ -50,11 +50,13 @@ class ThumbnailProvider extends ImageProvider<ThumbnailProviderKey> {
Future<ui.Codec> _loadAsync(ThumbnailProviderKey key, DecoderCallback decode) async { Future<ui.Codec> _loadAsync(ThumbnailProviderKey key, DecoderCallback decode) async {
try { try {
final bytes = await ImageFileService.getThumbnail(key.entry, extent, extent, taskKey: _cancellationKey); final bytes = await ImageFileService.getThumbnail(key.entry, extent, extent, taskKey: _cancellationKey);
if (bytes == null) return null; if (bytes == null) {
throw StateError('${entry.uri} (${entry.mimeType}) loading failed');
}
return await decode(bytes); return await decode(bytes);
} catch (error) { } catch (error) {
debugPrint('$runtimeType _loadAsync failed with path=${entry.path}, error=$error'); debugPrint('$runtimeType _loadAsync failed with path=${entry.path}, error=$error');
return null; throw StateError('${entry.mimeType} decoding failed');
} }
} }

View file

@ -55,11 +55,13 @@ class UriImage extends ImageProvider<UriImage> {
)); ));
}, },
); );
if (bytes == null) return null; if (bytes == null) {
throw StateError('$uri ($mimeType) loading failed');
}
return await decode(bytes); return await decode(bytes);
} catch (error) { } catch (error) {
debugPrint('$runtimeType _loadAsync failed with mimeType=$mimeType, uri=$uri, error=$error'); debugPrint('$runtimeType _loadAsync failed with mimeType=$mimeType, uri=$uri, error=$error');
return null; throw StateError('$mimeType decoding failed');
} finally { } finally {
unawaited(chunkEvents.close()); unawaited(chunkEvents.close());
} }