Browse Source

add sort asset delegate

Caijinglong 5 years ago
parent
commit
927897f716

+ 18
- 0
lib/src/delegate/sort_asset_delegate.dart View File

1
+part of './sort_delegate.dart';
2
+
3
+abstract class SortAssetDelegate {
4
+  const SortAssetDelegate();
5
+
6
+  void sort(List<AssetEntity> list);
7
+}
8
+
9
+class DefaultAssetDelegate extends SortAssetDelegate {
10
+  const DefaultAssetDelegate();
11
+
12
+  @override
13
+  void sort(List<AssetEntity> list) {
14
+    list.sort((entity1, entity2) {
15
+      return entity2.createTime.compareTo(entity1.createTime);
16
+    });
17
+  }
18
+}

+ 14
- 3
lib/src/delegate/sort_delegate.dart View File

1
 import 'package:photo_manager/photo_manager.dart';
1
 import 'package:photo_manager/photo_manager.dart';
2
 
2
 
3
+part './sort_asset_delegate.dart';
4
+
5
+/// SortPathDelegate
3
 abstract class SortDelegate {
6
 abstract class SortDelegate {
4
-  const SortDelegate();
7
+  final SortAssetDelegate assetDelegate;
8
+
9
+  const SortDelegate({
10
+    this.assetDelegate = const DefaultAssetDelegate(),
11
+  });
5
 
12
 
6
   void sort(List<AssetPathEntity> list);
13
   void sort(List<AssetPathEntity> list);
7
 
14
 
11
 }
18
 }
12
 
19
 
13
 class DefaultSortDelegate extends SortDelegate {
20
 class DefaultSortDelegate extends SortDelegate {
14
-  const DefaultSortDelegate();
21
+  const DefaultSortDelegate({
22
+    SortAssetDelegate assetDelegate = const DefaultAssetDelegate(),
23
+  }) : super(assetDelegate: assetDelegate);
15
 
24
 
16
   @override
25
   @override
17
   void sort(List<AssetPathEntity> list) {}
26
   void sort(List<AssetPathEntity> list) {}
18
 }
27
 }
19
 
28
 
20
 class CommonSortDelegate extends SortDelegate {
29
 class CommonSortDelegate extends SortDelegate {
21
-  const CommonSortDelegate();
30
+  const CommonSortDelegate({
31
+    SortAssetDelegate assetDelegate = const DefaultAssetDelegate(),
32
+  }) : super(assetDelegate: assetDelegate);
22
 
33
 
23
   @override
34
   @override
24
   void sort(List<AssetPathEntity> list) {
35
   void sort(List<AssetPathEntity> list) {

+ 7
- 0
lib/src/ui/page/photo_main_page.dart View File

178
     galleryPathList.addAll(widget.photoList);
178
     galleryPathList.addAll(widget.photoList);
179
     this.list.clear();
179
     this.list.clear();
180
     var assetList = await galleryPathList[0].assetList;
180
     var assetList = await galleryPathList[0].assetList;
181
+    _sortAssetList(assetList);
181
     this.list.addAll(assetList);
182
     this.list.addAll(assetList);
182
     setState(() {
183
     setState(() {
183
       _isInit = true;
184
       _isInit = true;
210
 
211
 
211
     if (pathList.isNotEmpty) {
212
     if (pathList.isNotEmpty) {
212
       imageList = await pathList[0].assetList;
213
       imageList = await pathList[0].assetList;
214
+      _sortAssetList(imageList);
213
       _currentPath = pathList[0];
215
       _currentPath = pathList[0];
214
     }
216
     }
215
 
217
 
228
     });
230
     });
229
   }
231
   }
230
 
232
 
233
+  void _sortAssetList(List<AssetEntity> assetList) {
234
+    options?.sortDelegate?.assetDelegate?.sort(assetList);
235
+  }
236
+
231
   Widget _buildBody() {
237
   Widget _buildBody() {
232
     if (!_isInit) {
238
     if (!_isInit) {
233
       return _buildLoading();
239
       return _buildLoading();
342
     _currentPath = value;
348
     _currentPath = value;
343
 
349
 
344
     _currentPath.assetList.then((v) {
350
     _currentPath.assetList.then((v) {
351
+      _sortAssetList(v);
345
       list.clear();
352
       list.clear();
346
       list.addAll(v);
353
       list.addAll(v);
347
       scrollController.jumpTo(0.0);
354
       scrollController.jumpTo(0.0);