@@ -869,18 +869,16 @@ class DefaultAssetPickerBuilderDelegate
869
869
int ? index,
870
870
AssetEntity currentAsset,
871
871
) async {
872
- final DefaultAssetPickerProvider provider =
873
- context.read <DefaultAssetPickerProvider >();
872
+ final p = context.read <DefaultAssetPickerProvider >();
874
873
// - When we reached the maximum select count and the asset is not selected,
875
874
// do nothing.
876
875
// - When the special type is WeChat Moment, pictures and videos cannot
877
876
// be selected at the same time. Video select should be banned if any
878
877
// pictures are selected.
879
- if ((! provider.selectedAssets.contains (currentAsset) &&
880
- provider.selectedMaximumAssets) ||
878
+ if ((! p.selectedAssets.contains (currentAsset) && p.selectedMaximumAssets) ||
881
879
(isWeChatMoment &&
882
880
currentAsset.type == AssetType .video &&
883
- provider .selectedAssets.isNotEmpty)) {
881
+ p .selectedAssets.isNotEmpty)) {
884
882
return ;
885
883
}
886
884
final revert = effectiveShouldRevertGrid (context);
@@ -893,23 +891,29 @@ class DefaultAssetPickerBuilderDelegate
893
891
selected = null ;
894
892
effectiveIndex = 0 ;
895
893
} else {
896
- current = provider.currentAssets
894
+ if (index == null ) {
895
+ current = p.selectedAssets;
896
+ current = current.reversed.toList (growable: false );
897
+ } else {
898
+ current = p.currentAssets;
899
+ }
900
+ current = current
897
901
.where ((AssetEntity e) => e.type == AssetType .image)
898
902
.toList ();
899
- selected = provider.selectedAssets;
900
- effectiveIndex = current.indexOf (currentAsset);
903
+ selected = p.selectedAssets;
904
+ final i = current.indexOf (currentAsset);
905
+ effectiveIndex = revert ? current.length - i - 1 : i;
901
906
}
902
- } else if (index == null ) {
903
- current = provider.selectedAssets;
904
- selected = provider.selectedAssets;
905
- effectiveIndex = selected.indexOf (currentAsset);
906
907
} else {
907
- current = provider.currentAssets;
908
- selected = provider.selectedAssets;
909
- effectiveIndex = revert ? current.length - index - 1 : index;
910
- }
911
- if (revert && index == null ) {
912
- current = current.reversed.toList (growable: false );
908
+ selected = p.selectedAssets;
909
+ if (index == null ) {
910
+ current = p.selectedAssets;
911
+ current = current.reversed.toList (growable: false );
912
+ effectiveIndex = selected.indexOf (currentAsset);
913
+ } else {
914
+ current = p.currentAssets;
915
+ effectiveIndex = revert ? current.length - index - 1 : index;
916
+ }
913
917
}
914
918
final List <AssetEntity >? result = await AssetPickerViewer .pushToViewer (
915
919
context,
@@ -919,9 +923,9 @@ class DefaultAssetPickerBuilderDelegate
919
923
previewThumbnailSize: previewThumbnailSize,
920
924
selectPredicate: selectPredicate,
921
925
selectedAssets: selected,
922
- selectorProvider: provider ,
926
+ selectorProvider: p ,
923
927
specialPickerType: specialPickerType,
924
- maxAssets: provider .maxAssets,
928
+ maxAssets: p .maxAssets,
925
929
shouldReversePreview: revert,
926
930
);
927
931
if (result != null ) {
0 commit comments