Skip to content

Commit bd2abd5

Browse files
committed
🐛 Fix selected assets not sync between thumbnail preview mode and grid view
1 parent a4223cd commit bd2abd5

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## 5.1.2
8+
9+
- Fix selected assets unsynced between thumb preview mode and grid view.
10+
711
## 5.1.1
812

913
- Integrate `lastModified` to sort path entities by default.

lib/src/delegates/asset_picker_builder_delegate.dart

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1139,9 +1139,13 @@ class DefaultAssetPickerBuilderDelegate
11391139

11401140
@override
11411141
Widget selectIndicator(BuildContext context, AssetEntity asset) {
1142-
return Selector<DefaultAssetPickerProvider, List<AssetEntity>>(
1143-
selector: (_, DefaultAssetPickerProvider p) => p.selectedAssets,
1144-
builder: (_, List<AssetEntity> selectedAssets, __) {
1142+
return Selector<DefaultAssetPickerProvider, int>(
1143+
selector: (_, DefaultAssetPickerProvider p) => p.selectedAssetsCount,
1144+
builder: (BuildContext context, int count, __) {
1145+
final List<AssetEntity> selectedAssets =
1146+
context.select<DefaultAssetPickerProvider, List<AssetEntity>>(
1147+
(DefaultAssetPickerProvider p) => p.selectedAssets,
1148+
);
11451149
final bool selected = selectedAssets.contains(asset);
11461150
final double indicatorSize = Screens.width / gridCount / 3;
11471151
return Positioned(

lib/src/provider/asset_picker_provider.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,14 @@ abstract class AssetPickerProvider<A, P> extends ChangeNotifier {
178178
notifyListeners();
179179
}
180180

181+
/// How many assets have been selected.
182+
/// 当前有资源已经被选择
183+
///
184+
/// This getter provides a "Should Rebuild" condition judgement to [Selector]
185+
/// with the preview widget's selective part.
186+
/// 它为预览部件的选中部分的 [Selector] 提供了是否重建的条件。
187+
int get selectedAssetsCount => _selectedAssets.length;
188+
181189
/// 选中资源是否为空
182190
bool get isSelectedNotEmpty => selectedAssets.isNotEmpty;
183191

0 commit comments

Comments
 (0)