Skip to content

Commit 6531041

Browse files
authored
⚡️ Improve onChangingSelected in AssetPickerViewerBuilderDelegate (#332)
1 parent e9250cb commit 6531041

File tree

4 files changed

+22
-18
lines changed

4 files changed

+22
-18
lines changed

CHANGELOG.md

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

55
# Changelog
66

7+
## 7.3.2
8+
9+
### Improvements
10+
11+
- Improve `onChangingSelected` in `AssetPickerViewerBuilderDelegate`. (#332)
12+
- Fix typo in `README.md`. (#333)
13+
714
## 7.3.1
815

916
### Improvements

example/pubspec.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: wechat_assets_picker_demo
22
description: The demo project for the wechat_assets_picker package.
3-
version: 7.3.1+18
3+
version: 7.3.2+19
44
publish_to: none
55

66
environment:
@@ -17,7 +17,6 @@ dependencies:
1717
path: ../
1818
wechat_camera_picker: ^3.2.0
1919

20-
meta: ^1.7.0
2120
package_info_plus: ^1.4.2
2221
path: ^1.8.0
2322
path_provider: ^2.0.8

lib/src/delegates/asset_picker_viewer_builder_delegate.dart

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -240,9 +240,7 @@ abstract class AssetPickerViewerBuilderDelegate<Asset, Path> {
240240
if (!isSelectedPreviewing) {
241241
selectedAssets?.remove(entity);
242242
}
243-
if (selectedCount != selectedNotifier.value) {
244-
selectedNotifier.value = selectedCount;
245-
}
243+
selectedNotifier.value = selectedCount;
246244
}
247245

248246
void selectAsset(Asset entity) {
@@ -254,12 +252,10 @@ abstract class AssetPickerViewerBuilderDelegate<Asset, Path> {
254252
if (!isSelectedPreviewing) {
255253
selectedAssets?.add(entity);
256254
}
257-
if (selectedCount != selectedNotifier.value) {
258-
selectedNotifier.value = selectedCount;
259-
}
255+
selectedNotifier.value = selectedCount;
260256
}
261257

262-
Future<void> onChangingSelected(
258+
Future<bool> onChangingSelected(
263259
BuildContext context,
264260
Asset asset,
265261
bool isSelected,
@@ -270,13 +266,14 @@ abstract class AssetPickerViewerBuilderDelegate<Asset, Path> {
270266
isSelected,
271267
);
272268
if (selectPredicateResult == false) {
273-
return;
269+
return false;
274270
}
275271
if (isSelected) {
276272
unSelectAsset(asset);
277-
return;
273+
} else {
274+
selectAsset(asset);
278275
}
279-
selectAsset(asset);
276+
return true;
280277
}
281278

282279
/// Method to switch [isDisplayingDetail].
@@ -806,7 +803,7 @@ class DefaultAssetPickerViewerBuilderDelegate
806803
shape: RoundedRectangleBorder(
807804
borderRadius: BorderRadius.circular(3.0),
808805
),
809-
onPressed: () {
806+
onPressed: () async {
810807
if (isWeChatMoment && hasVideo) {
811808
Navigator.of(context).pop(<AssetEntity>[currentAsset]);
812809
return;
@@ -815,10 +812,11 @@ class DefaultAssetPickerViewerBuilderDelegate
815812
Navigator.of(context).pop(provider.currentlySelectedAssets);
816813
return;
817814
}
818-
selectAsset(currentAsset);
819-
Navigator.of(context).pop(
820-
selectedAssets ?? <AssetEntity>[currentAsset],
821-
);
815+
if (await onChangingSelected(context, currentAsset, false)) {
816+
Navigator.of(context).pop(
817+
selectedAssets ?? <AssetEntity>[currentAsset],
818+
);
819+
}
822820
},
823821
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
824822
child: ScaleText(

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: wechat_assets_picker
22
description: An audio/video/image picker in pure Dart which is the same with WeChat, support multi picking.
3-
version: 7.3.1
3+
version: 7.3.2
44
homepage: https://github.com/fluttercandies/flutter_wechat_assets_picker
55

66
environment:

0 commit comments

Comments
 (0)