Skip to content

Commit 66a5a9a

Browse files
committed
🥅 More exception info
1 parent fc66aeb commit 66a5a9a

File tree

3 files changed

+34
-11
lines changed

3 files changed

+34
-11
lines changed

lib/src/delegates/asset_picker_builder_delegate.dart

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -967,40 +967,59 @@ class DefaultAssetPickerBuilderDelegate
967967
return;
968968
}
969969
final revert = effectiveShouldRevertGrid(context);
970-
List<AssetEntity> current;
970+
// ignore: no_leading_underscores_for_local_identifiers
971+
final int _debugFlow; // Only for debug process.
972+
final List<AssetEntity> current;
971973
final List<AssetEntity>? selected;
972974
final int effectiveIndex;
973975
if (isWeChatMoment) {
974976
if (currentAsset.type == AssetType.video) {
975977
current = <AssetEntity>[currentAsset];
976978
selected = null;
977979
effectiveIndex = 0;
980+
_debugFlow = 10;
978981
} else {
982+
final List<AssetEntity> list;
979983
if (index == null) {
980-
current = p.selectedAssets;
981-
current = current.reversed.toList(growable: false);
984+
list = p.selectedAssets.reversed.toList(growable: false);
982985
} else {
983-
current = p.currentAssets;
986+
list = p.currentAssets;
984987
}
985-
current = current
986-
.where((AssetEntity e) => e.type == AssetType.image)
987-
.toList();
988+
current = list.where((e) => e.type == AssetType.image).toList();
988989
selected = p.selectedAssets;
989990
final i = current.indexOf(currentAsset);
990991
effectiveIndex = revert ? current.length - i - 1 : i;
992+
_debugFlow = switch ((index == null, revert)) {
993+
(true, true) => 21,
994+
(true, false) => 20,
995+
(false, true) => 31,
996+
(false, false) => 30,
997+
};
991998
}
992999
} else {
9931000
selected = p.selectedAssets;
1001+
final List<AssetEntity> list;
9941002
if (index == null) {
995-
current = p.selectedAssets;
9961003
if (revert) {
997-
current = current.reversed.toList(growable: false);
1004+
list = p.selectedAssets.reversed.toList(growable: false);
1005+
} else {
1006+
list = p.selectedAssets;
9981007
}
9991008
effectiveIndex = selected.indexOf(currentAsset);
1009+
current = list;
10001010
} else {
10011011
current = p.currentAssets;
10021012
effectiveIndex = revert ? current.length - index - 1 : index;
10031013
}
1014+
_debugFlow = switch ((index == null, revert)) {
1015+
(true, true) => 41,
1016+
(true, false) => 40,
1017+
(false, true) => 51,
1018+
(false, false) => 50,
1019+
};
1020+
}
1021+
if (current.isEmpty) {
1022+
throw StateError('Previewing empty assets is not allowed. $_debugFlow');
10041023
}
10051024
final List<AssetEntity>? result = await AssetPickerViewer.pushToViewer(
10061025
context,

lib/src/delegates/asset_picker_viewer_builder_delegate.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ abstract class AssetPickerViewerBuilderDelegate<Asset, Path> {
3939
this.maxAssets,
4040
this.shouldReversePreview = false,
4141
this.selectPredicate,
42-
}) : assert(maxAssets == null || maxAssets > 0),
43-
assert(currentIndex >= 0);
42+
}) : assert(previewAssets.isNotEmpty),
43+
assert(currentIndex >= 0),
44+
assert(maxAssets == null || maxAssets > 0);
4445

4546
/// [ChangeNotifier] for photo selector viewer.
4647
/// 资源预览器的状态保持

lib/src/widget/asset_picker_viewer.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ class AssetPickerViewer<Asset, Path> extends StatefulWidget {
4545
const PermissionRequestOption(),
4646
bool shouldAutoplayPreview = false,
4747
}) async {
48+
if (previewAssets.isEmpty) {
49+
throw StateError('Previewing empty assets is not allowed.');
50+
}
4851
await AssetPicker.permissionCheck(requestOption: permissionRequestOption);
4952
final Widget viewer = AssetPickerViewer<AssetEntity, AssetPathEntity>(
5053
builder: DefaultAssetPickerViewerBuilderDelegate(

0 commit comments

Comments
 (0)