Browse Source

Merge pull request #30 from CaiJingLong/sort-asset

Sort asset
C 5 years ago
parent
commit
dd791a0d7f
No account linked to committer's email address

+ 4
- 4
example/android/app/build.gradle View File

25
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
25
 apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
26
 
26
 
27
 android {
27
 android {
28
-    compileSdkVersion 27
28
+    compileSdkVersion 28
29
 
29
 
30
     lintOptions {
30
     lintOptions {
31
         disable 'InvalidPackage'
31
         disable 'InvalidPackage'
35
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
35
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
36
         applicationId "com.example.example"
36
         applicationId "com.example.example"
37
         minSdkVersion 16
37
         minSdkVersion 16
38
-        targetSdkVersion 27
38
+        targetSdkVersion 28
39
         versionCode flutterVersionCode.toInteger()
39
         versionCode flutterVersionCode.toInteger()
40
         versionName flutterVersionName
40
         versionName flutterVersionName
41
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
41
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
56
 
56
 
57
 dependencies {
57
 dependencies {
58
     testImplementation 'junit:junit:4.12'
58
     testImplementation 'junit:junit:4.12'
59
-    androidTestImplementation 'com.android.support.test:runner:1.0.2'
60
-    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
59
+//    androidTestImplementation 'com.android.support.test:runner:1.0.2'
60
+//    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
61
 }
61
 }

+ 1
- 1
example/android/build.gradle View File

5
     }
5
     }
6
 
6
 
7
     dependencies {
7
     dependencies {
8
-        classpath 'com.android.tools.build:gradle:3.1.2'
8
+        classpath 'com.android.tools.build:gradle:3.3.1'
9
     }
9
     }
10
 }
10
 }
11
 
11
 

+ 2
- 0
example/android/gradle.properties View File

1
 org.gradle.jvmargs=-Xmx1536M
1
 org.gradle.jvmargs=-Xmx1536M
2
+android.enableJetifier=true
3
+android.useAndroidX=true

+ 1
- 1
example/android/gradle/wrapper/gradle-wrapper.properties View File

3
 distributionPath=wrapper/dists
3
 distributionPath=wrapper/dists
4
 zipStoreBase=GRADLE_USER_HOME
4
 zipStoreBase=GRADLE_USER_HOME
5
 zipStorePath=wrapper/dists
5
 zipStorePath=wrapper/dists
6
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
6
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip

+ 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);

+ 6
- 4
pubspec.lock View File

70
   photo_manager:
70
   photo_manager:
71
     dependency: "direct main"
71
     dependency: "direct main"
72
     description:
72
     description:
73
-      name: photo_manager
74
-      url: "https://pub.flutter-io.cn"
75
-    source: hosted
76
-    version: "0.2.1"
73
+      path: "."
74
+      ref: "8ef0bf9047cdd86e2331f0db8d15c4c50f35610d"
75
+      resolved-ref: "8ef0bf9047cdd86e2331f0db8d15c4c50f35610d"
76
+      url: "https://github.com/CaiJingLong/flutter_photo_manager.git"
77
+    source: git
78
+    version: "0.3.0"
77
   quiver:
79
   quiver:
78
     dependency: transitive
80
     dependency: transitive
79
     description:
81
     description:

+ 5
- 5
pubspec.yaml View File

11
   flutter:
11
   flutter:
12
     sdk: flutter
12
     sdk: flutter
13
 
13
 
14
-  photo_manager: ^0.2.1
15
-  # photo_manager:
16
-  #   git:
17
-  #     url: https://github.com/CaiJingLong/flutter_photo_manager.git
18
-  #     ref: 29d844b2c4594d7e524d0169658bc4f3b9ef2ddc
14
+  # photo_manager: ^0.2.1
15
+  photo_manager:
16
+    git:
17
+      url: https://github.com/CaiJingLong/flutter_photo_manager.git
18
+      ref: 8ef0bf9047cdd86e2331f0db8d15c4c50f35610d
19
   # photo_manager:
19
   # photo_manager:
20
   #   path: ../flutter_photo_manager
20
   #   path: ../flutter_photo_manager
21
 
21