Skip to content

Commit 5869bd8

Browse files
authored
⚡️ Improve image provider's constructor and decode (#124)
1 parent 7c7864a commit 5869bd8

File tree

4 files changed

+20
-18
lines changed

4 files changed

+20
-18
lines changed

example/lib/pages/multi_assets_page.dart

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -216,11 +216,7 @@ class _MultiAssetsPageState extends State<MultiAssetsPage>
216216

217217
Widget _imageAssetWidget(AssetEntity asset) {
218218
return Image(
219-
image: AssetEntityImageProvider(
220-
asset,
221-
isOriginal: false,
222-
thumbSize: <int>[100, 100],
223-
),
219+
image: AssetEntityImageProvider(asset, isOriginal: false),
224220
fit: BoxFit.cover,
225221
);
226222
}

example/lib/pages/single_assets_page.dart

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -186,11 +186,7 @@ class _SingleAssetPageState extends State<SingleAssetPage>
186186

187187
Widget _imageAssetWidget(AssetEntity asset) {
188188
return Image(
189-
image: AssetEntityImageProvider(
190-
asset,
191-
isOriginal: false,
192-
thumbSize: <int>[100, 100],
193-
),
189+
image: AssetEntityImageProvider(asset, isOriginal: false),
194190
fit: BoxFit.cover,
195191
);
196192
}

lib/src/delegates/asset_picker_viewer_builder_delegate.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -367,11 +367,7 @@ class DefaultAssetPickerViewerBuilderDelegate
367367
return Positioned.fill(
368368
child: RepaintBoundary(
369369
child: ExtendedImage(
370-
image: AssetEntityImageProvider(
371-
asset,
372-
isOriginal: previewThumbSize == null,
373-
thumbSize: previewThumbSize,
374-
),
370+
image: AssetEntityImageProvider(asset, isOriginal: false),
375371
fit: BoxFit.cover,
376372
),
377373
),
@@ -388,7 +384,7 @@ class DefaultAssetPickerViewerBuilderDelegate
388384
Center(
389385
child: Icon(
390386
Icons.video_library,
391-
color: themeData.colorScheme.surface.withOpacity(0.54),
387+
color: themeData.iconTheme.color?.withOpacity(0.54),
392388
),
393389
),
394390
],

lib/src/provider/asset_entity_image_provider.dart

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ class AssetEntityImageProvider extends ImageProvider<AssetEntityImageProvider> {
1414
const AssetEntityImageProvider(
1515
this.entity, {
1616
this.scale = 1.0,
17-
this.thumbSize,
17+
this.thumbSize = const <int>[
18+
Constants.defaultGridThumbSize,
19+
Constants.defaultGridThumbSize,
20+
],
1821
this.isOriginal = true,
1922
}) : assert(
2023
isOriginal || thumbSize?.length == 2,
@@ -68,7 +71,18 @@ class AssetEntityImageProvider extends ImageProvider<AssetEntityImageProvider> {
6871
assert(key == this);
6972
Uint8List? data;
7073
if (isOriginal) {
71-
if (imageFileType == ImageFileType.heic) {
74+
if (key.entity.type == AssetType.audio ||
75+
key.entity.type == AssetType.other) {
76+
throw UnsupportedError(
77+
'Image data for the ${key.entity.type} is not supported.',
78+
);
79+
}
80+
if (key.entity.type == AssetType.video) {
81+
data = await key.entity.thumbDataWithSize(
82+
Constants.defaultGridThumbSize,
83+
Constants.defaultGridThumbSize,
84+
);
85+
} else if (imageFileType == ImageFileType.heic) {
7286
data = await (await key.entity.file)?.readAsBytes();
7387
} else {
7488
data = await key.entity.originBytes;

0 commit comments

Comments
 (0)