Line data Source code
1 : import 'package:flutter/material.dart'; 2 : import 'package:pal/src/ui/editor/pages/app_settings/app_settings.dart'; 3 : import 'package:pal/src/ui/editor/pages/create_helper/create_helper.dart'; 4 : import 'package:pal/src/ui/editor/pages/helper_details/helper_details_view.dart'; 5 : import 'package:pal/src/ui/editor/pages/helper_editor/font_editor/pickers/font_family_picker/font_family_picker.dart'; 6 : import 'package:pal/src/ui/editor/pages/helper_editor/font_editor/pickers/font_weight_picker/font_weight_picker.dart'; 7 : import 'package:pal/src/ui/editor/pages/media_gallery/media_gallery.dart'; 8 : import 'package:pal/src/ui/shared/widgets/overlayed.dart'; 9 : 10 18 : GlobalKey<NavigatorState> palNavigatorGlobalKey = new GlobalKey<NavigatorState>(); 11 : 12 0 : void globalPop() { 13 0 : Navigator.pop(palNavigatorGlobalKey.currentContext); 14 : // return palNavigatorGlobalKey.currentState.pop(); 15 : } 16 : 17 0 : Route<dynamic> route(RouteSettings settings) { 18 0 : print("root router... ${settings.name}"); 19 0 : switch (settings.name) { 20 0 : case '/settings': 21 0 : return MaterialPageRoute( 22 0 : builder: (context) => AppSettingsPage(), 23 : ); 24 0 : case '/editor/new': 25 0 : CreateHelperPageArguments args = settings.arguments; 26 0 : return MaterialPageRoute( 27 0 : builder: (context) => CreateHelperPage( 28 0 : pageId: args.pageId, 29 0 : hostedAppNavigatorKey: args.hostedAppNavigatorKey, 30 : ), 31 : ); 32 0 : case '/editor/helper': 33 0 : HelperDetailsComponentArguments arguments = settings.arguments; 34 0 : return MaterialPageRoute( 35 0 : builder: (context) => HelperDetailsComponent( 36 : arguments: arguments, 37 : ), 38 : ); 39 0 : case '/editor/new/font-family': 40 0 : FontFamilyPickerArguments args = settings.arguments; 41 0 : return MaterialPageRoute( 42 0 : builder: (context) => FontFamilyPickerPage( 43 : arguments: args, 44 : )); 45 0 : case '/editor/new/font-weight': 46 0 : FontWeightPickerArguments args = settings.arguments; 47 0 : return MaterialPageRoute( 48 0 : builder: (context) => FontWeightPickerPage( 49 : arguments: args, 50 : )); 51 0 : case '/editor/media-gallery': 52 0 : MediaGalleryPageArguments args = settings.arguments; 53 0 : return MaterialPageRoute( 54 0 : builder: (context) => MediaGalleryPage( 55 0 : mediaId: args.mediaId, 56 : )); 57 : // case '/editor/:id': 58 : // return MaterialPageRoute(builder: (context) => Text('A route with id')); 59 : // case '/editor/:id/edit': 60 : // return MaterialPageRoute( 61 : // builder: (context) => Text('A route with id with edit')); 62 : default: 63 : throw 'unexpected Route'; 64 : } 65 : } 66 : 67 : //shows a page as overlay for our editor 68 4 : showOverlayed(GlobalKey<NavigatorState> hostedAppNavigatorKey, WidgetBuilder builder, {OverlayKeys key}) { 69 4 : OverlayEntry helperOverlay = OverlayEntry( 70 : opaque: false, 71 : builder: builder, 72 : ); 73 16 : Overlayed.of(hostedAppNavigatorKey.currentContext).entries.putIfAbsent( 74 : key ?? OverlayKeys.EDITOR_OVERLAY_KEY, 75 4 : () => helperOverlay, 76 : ); 77 12 : hostedAppNavigatorKey.currentState.overlay.insert(helperOverlay); 78 : } 79 : 80 2 : showOverlayedInContext(WidgetBuilder builder, {OverlayKeys key}) { 81 2 : OverlayEntry helperOverlay = OverlayEntry( 82 : opaque: false, 83 : builder: builder, 84 : ); 85 12 : Overlayed.of(palNavigatorGlobalKey.currentState.context).entries.putIfAbsent( 86 : key ?? OverlayKeys.EDITOR_OVERLAY_KEY, 87 2 : () => helperOverlay, 88 : ); 89 8 : palNavigatorGlobalKey.currentState.overlay.insert(helperOverlay); 90 : } 91 : 92 1 : closeOverlayed(OverlayKeys key) { 93 6 : Overlayed.of(palNavigatorGlobalKey.currentState.context).entries[key] 94 1 : .remove(); 95 6 : Overlayed.of(palNavigatorGlobalKey.currentState.context).entries.remove(key); 96 : }