@@ -14,6 +14,7 @@ import '../delegates/asset_picker_viewer_builder_delegate.dart';
1414import '../provider/asset_picker_provider.dart' ;
1515import '../provider/asset_picker_viewer_provider.dart' ;
1616import 'asset_picker.dart' ;
17+ import 'asset_picker_page_route.dart' ;
1718
1819class AssetPickerViewer <Asset , Path > extends StatefulWidget {
1920 const AssetPickerViewer ({
@@ -44,6 +45,9 @@ class AssetPickerViewer<Asset, Path> extends StatefulWidget {
4445 PermissionRequestOption permissionRequestOption =
4546 const PermissionRequestOption (),
4647 bool shouldAutoplayPreview = false ,
48+ bool useRootNavigator = false ,
49+ RouteSettings ? pageRouteSettings,
50+ AssetPickerViewerPageRouteBuilder <List <AssetEntity >>? pageRouteBuilder,
4751 }) async {
4852 if (previewAssets.isEmpty) {
4953 throw StateError ('Previewing empty assets is not allowed.' );
@@ -72,15 +76,13 @@ class AssetPickerViewer<Asset, Path> extends StatefulWidget {
7276 shouldAutoplayPreview: shouldAutoplayPreview,
7377 ),
7478 );
75- final PageRouteBuilder < List <AssetEntity >> pageRoute =
76- PageRouteBuilder < List < AssetEntity >>(
77- pageBuilder : (_, __, ___) => viewer ,
78- transitionsBuilder : (_, Animation < double > animation, __, Widget child) {
79- return FadeTransition (opacity : animation, child : child);
80- } ,
79+ final List <AssetEntity >? result = await Navigator . maybeOf (
80+ context,
81+ rootNavigator : useRootNavigator ,
82+ ) ? . push < List < AssetEntity >>(
83+ pageRouteBuilder ? . call (viewer) ??
84+ AssetPickerViewerPageRoute (builder : (context) => viewer) ,
8185 );
82- final List <AssetEntity >? result =
83- await Navigator .maybeOf (context)? .push <List <AssetEntity >>(pageRoute);
8486 return result;
8587 }
8688
@@ -91,17 +93,19 @@ class AssetPickerViewer<Asset, Path> extends StatefulWidget {
9193 required AssetPickerViewerBuilderDelegate <A , P > delegate,
9294 PermissionRequestOption permissionRequestOption =
9395 const PermissionRequestOption (),
96+ bool useRootNavigator = false ,
97+ RouteSettings ? pageRouteSettings,
98+ AssetPickerViewerPageRouteBuilder <List <A >>? pageRouteBuilder,
9499 }) async {
95100 await AssetPicker .permissionCheck (requestOption: permissionRequestOption);
96101 final Widget viewer = AssetPickerViewer <A , P >(builder: delegate);
97- final PageRouteBuilder <List <A >> pageRoute = PageRouteBuilder <List <A >>(
98- pageBuilder: (_, __, ___) => viewer,
99- transitionsBuilder: (_, Animation <double > animation, __, Widget child) {
100- return FadeTransition (opacity: animation, child: child);
101- },
102+ final List <A >? result = await Navigator .maybeOf (
103+ context,
104+ rootNavigator: useRootNavigator,
105+ )? .push <List <A >>(
106+ pageRouteBuilder? .call (viewer) ??
107+ AssetPickerViewerPageRoute (builder: (context) => viewer),
102108 );
103- final List <A >? result =
104- await Navigator .maybeOf (context)? .push <List <A >>(pageRoute);
105109 return result;
106110 }
107111}
0 commit comments