@@ -34,47 +34,52 @@ class AssetPickerViewer<A, P> extends StatefulWidget {
34
34
SpecialPickerType ? specialPickerType,
35
35
int ? maxAssets,
36
36
}) async {
37
- try {
38
- final Widget viewer = AssetPickerViewer <AssetEntity , AssetPathEntity >(
39
- builder: DefaultAssetPickerViewerBuilderDelegate (
40
- currentIndex: currentIndex,
41
- previewAssets: previewAssets,
42
- provider: selectedAssets != null
43
- ? AssetPickerViewerProvider <AssetEntity >(selectedAssets)
44
- : null ,
45
- themeData: themeData,
46
- previewThumbSize: previewThumbSize,
47
- specialPickerType: specialPickerType,
48
- selectedAssets: selectedAssets,
49
- selectorProvider: selectorProvider,
50
- maxAssets: maxAssets,
51
- ),
52
- );
53
- final PageRouteBuilder <List <AssetEntity >> pageRoute =
54
- PageRouteBuilder <List <AssetEntity >>(
55
- pageBuilder: (
56
- BuildContext context,
57
- Animation <double > animation,
58
- Animation <double > secondaryAnimation,
59
- ) {
60
- return viewer;
61
- },
62
- transitionsBuilder: (
63
- BuildContext context,
64
- Animation <double > animation,
65
- Animation <double > secondaryAnimation,
66
- Widget child,
67
- ) {
68
- return FadeTransition (opacity: animation, child: child);
69
- },
70
- );
71
- final List <AssetEntity >? result =
72
- await Navigator .of (context).push <List <AssetEntity >>(pageRoute);
73
- return result;
74
- } catch (e) {
75
- realDebugPrint ('Error when calling assets picker viewer: $e ' );
76
- return null ;
77
- }
37
+ await AssetPicker .permissionCheck ();
38
+ final Widget viewer = AssetPickerViewer <AssetEntity , AssetPathEntity >(
39
+ builder: DefaultAssetPickerViewerBuilderDelegate (
40
+ currentIndex: currentIndex,
41
+ previewAssets: previewAssets,
42
+ provider: selectedAssets != null
43
+ ? AssetPickerViewerProvider <AssetEntity >(selectedAssets)
44
+ : null ,
45
+ themeData: themeData,
46
+ previewThumbSize: previewThumbSize,
47
+ specialPickerType: specialPickerType,
48
+ selectedAssets: selectedAssets,
49
+ selectorProvider: selectorProvider,
50
+ maxAssets: maxAssets,
51
+ ),
52
+ );
53
+ final PageRouteBuilder <List <AssetEntity >> pageRoute =
54
+ PageRouteBuilder <List <AssetEntity >>(
55
+ pageBuilder: (_, __, ___) => viewer,
56
+ transitionsBuilder: (_, Animation <double > animation, __, Widget child) {
57
+ return FadeTransition (opacity: animation, child: child);
58
+ },
59
+ );
60
+ final List <AssetEntity >? result =
61
+ await Navigator .of (context).push <List <AssetEntity >>(pageRoute);
62
+ return result;
63
+ }
64
+
65
+ /// Call the viewer with provided delegate and provider.
66
+ /// 通过指定的 [delegate] 调用查看器
67
+ static Future <List <A >?> pushToViewerWithDelegate <A , P >(
68
+ BuildContext context, {
69
+ required AssetPickerViewerBuilderDelegate <A , P > delegate,
70
+ }) async {
71
+ await AssetPicker .permissionCheck ();
72
+ final Widget viewer = AssetPickerViewer <A , P >(builder: delegate);
73
+ final PageRouteBuilder <List <A >> pageRoute = PageRouteBuilder <List <A >>(
74
+ pageBuilder: (_, __, ___) => viewer,
75
+ transitionsBuilder: (_, Animation <double > animation, __, Widget child) {
76
+ return FadeTransition (opacity: animation, child: child);
77
+ },
78
+ );
79
+ final List <A >? result = await Navigator .of (context).push <List <A >>(
80
+ pageRoute,
81
+ );
82
+ return result;
78
83
}
79
84
}
80
85
0 commit comments