Skip to content

Commit eaab93c

Browse files
authored
🐛 Fix view assets with only selected (#546)
Fixes #536
1 parent 9a8c4c1 commit eaab93c

File tree

5 files changed

+28
-13
lines changed

5 files changed

+28
-13
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ that can be found in the LICENSE file. -->
1313

1414
- Use `wechat_picker_library`.
1515

16+
### Fixes
17+
18+
- Fix previewing selected assets behavior.
19+
1620
## 9.0.0-dev.2
1721

1822
### Fixes

example/lib/customs/pickers/directory_file_asset_picker.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -381,8 +381,8 @@ class FileAssetPickerBuilder
381381
@override
382382
Future<void> viewAsset(
383383
BuildContext context,
384-
int index,
385-
AssetEntity currentAsset,
384+
int? index,
385+
File currentAsset,
386386
) async {
387387
final List<File>? result = await Navigator.of(context).push<List<File>?>(
388388
PageRouteBuilder<List<File>>(
@@ -393,7 +393,8 @@ class FileAssetPickerBuilder
393393
) {
394394
return AssetPickerViewer<File, Directory>(
395395
builder: FileAssetPickerViewerBuilderDelegate(
396-
currentIndex: index,
396+
currentIndex:
397+
index ?? provider.selectedAssets.indexOf(currentAsset),
397398
previewAssets: provider.selectedAssets,
398399
provider: FileAssetPickerViewerProvider(provider.selectedAssets),
399400
themeData: AssetPicker.themeData(themeColor),

example/lib/customs/pickers/insta_asset_picker.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,9 +378,12 @@ class InstaAssetPickerBuilder extends DefaultAssetPickerBuilderDelegate {
378378
@override
379379
Future<void> viewAsset(
380380
BuildContext context,
381-
int index,
381+
int? index,
382382
AssetEntity currentAsset,
383383
) async {
384+
if (index == null) {
385+
return;
386+
}
384387
// if is preview asset, unselect it
385388
if (provider.selectedAssets.isNotEmpty &&
386389
_previewAsset.value == currentAsset) {

guides/migration_guide.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,14 @@ This document gathered all breaking changes and migrations requirement between m
1919

2020
## 9.0.0
2121

22-
### Summary
22+
### View assets signature change
23+
24+
`AssetPickerBuilderDelegate.viewAsset` has 2 changes:
25+
- It now uses the generic type of the delegate rather than always `AssetEntity`.
26+
- The `index` of arguments is now nullable,
27+
to indicate the behavior of previewing selected assets only.
28+
29+
### Permission request option integration
2330

2431
`PermissionRequestOption` has been added to
2532
`AssetPickerDelegate.permissionCheck` and
@@ -28,7 +35,7 @@ Classes that extend `AssetPickerDelegate` and override these methods must migrat
2835
Delegates that use `AssetPicker.permissionCheck`
2936
should choose whether to pass the request option.
3037

31-
### Details
38+
#### Details
3239

3340
Before:
3441

lib/src/delegates/asset_picker_builder_delegate.dart

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -242,11 +242,7 @@ abstract class AssetPickerBuilderDelegate<Asset, Path> {
242242

243243
/// Determine how to browse assets in the viewer.
244244
/// 定义如何在查看器中浏览资源
245-
Future<void> viewAsset(
246-
BuildContext context,
247-
int index,
248-
AssetEntity currentAsset,
249-
);
245+
Future<void> viewAsset(BuildContext context, int? index, Asset currentAsset);
250246

251247
/// Yes, the build method.
252248
/// 没错,是它是它就是它,我们亲爱的 build 方法~
@@ -870,7 +866,7 @@ class DefaultAssetPickerBuilderDelegate
870866
@override
871867
Future<void> viewAsset(
872868
BuildContext context,
873-
int index,
869+
int? index,
874870
AssetEntity currentAsset,
875871
) async {
876872
final DefaultAssetPickerProvider provider =
@@ -902,6 +898,10 @@ class DefaultAssetPickerBuilderDelegate
902898
selected = provider.selectedAssets;
903899
effectiveIndex = current.indexOf(currentAsset);
904900
}
901+
} else if (index == null) {
902+
current = provider.selectedAssets;
903+
selected = provider.selectedAssets;
904+
effectiveIndex = selected.indexOf(currentAsset);
905905
} else {
906906
current = provider.currentAssets;
907907
selected = provider.selectedAssets;
@@ -1936,7 +1936,7 @@ class DefaultAssetPickerBuilderDelegate
19361936
child: Consumer<DefaultAssetPickerProvider>(
19371937
builder: (context, DefaultAssetPickerProvider p, __) => GestureDetector(
19381938
onTap: p.isSelectedNotEmpty
1939-
? () => viewAsset(context, 0, p.selectedAssets.first)
1939+
? () => viewAsset(context, null, p.selectedAssets.first)
19401940
: null,
19411941
child: Selector<DefaultAssetPickerProvider, String>(
19421942
selector: (_, DefaultAssetPickerProvider p) =>

0 commit comments

Comments
 (0)