Allow multiple map routes to share the Map widget and transition between each other
This commit is contained in:
@@ -1,13 +1,33 @@
|
||||
import 'package:auto_route/auto_route.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:furman_now/src/screens/events/index.dart';
|
||||
import 'package:furman_now/src/screens/home/home_header.dart';
|
||||
import 'package:furman_now/src/screens/home/index.dart';
|
||||
import 'package:furman_now/src/screens/info/index.dart';
|
||||
import 'package:furman_now/src/screens/map/index.dart';
|
||||
import 'package:furman_now/src/screens/map/map_category.dart';
|
||||
import 'package:furman_now/src/screens/map/map_home.dart';
|
||||
import 'package:furman_now/src/screens/student_id/index.dart';
|
||||
import 'package:furman_now/src/utils/translucent_route.dart';
|
||||
|
||||
import '../layouts/main/index.dart';
|
||||
|
||||
Route<T> mapRouteBuilder<T>(BuildContext context, Widget child, CustomPage<T> page){
|
||||
return TranslucentRoute(
|
||||
settings: page,
|
||||
transitionDuration: const Duration(milliseconds: 200),
|
||||
transitionBuilder: (context, animation, secondaryAnimation, child) =>
|
||||
FadeTransition(
|
||||
opacity: animation,
|
||||
child: FadeTransition(
|
||||
opacity: secondaryAnimation.drive(Tween<double>(begin: 1, end: 0)),
|
||||
child: child,
|
||||
),
|
||||
),
|
||||
pageBuilder: (context) => child,
|
||||
);
|
||||
}
|
||||
|
||||
@MaterialAutoRouter(
|
||||
replaceInRouteName: 'Screen,Route',
|
||||
routes: <AutoRoute>[
|
||||
@@ -25,7 +45,18 @@ import '../layouts/main/index.dart';
|
||||
transitionsBuilder: TransitionsBuilders.fadeIn,
|
||||
),
|
||||
]),
|
||||
AutoRoute(path: "map", page: MapScreen),
|
||||
AutoRoute(path: "map", page: MapScreen, children: [
|
||||
CustomRoute(
|
||||
path: "",
|
||||
page: MapHomeScreen,
|
||||
customRouteBuilder: mapRouteBuilder,
|
||||
),
|
||||
CustomRoute(
|
||||
path: "category/:id",
|
||||
page: MapCategoryScreen,
|
||||
customRouteBuilder: mapRouteBuilder,
|
||||
),
|
||||
]),
|
||||
AutoRoute(path: "events", page: EventsScreen),
|
||||
AutoRoute(path: "info", page: InfoScreen),
|
||||
]),
|
||||
|
@@ -11,8 +11,8 @@
|
||||
// ignore_for_file: type=lint
|
||||
|
||||
// ignore_for_file: no_leading_underscores_for_library_prefixes
|
||||
import 'package:auto_route/auto_route.dart' as _i8;
|
||||
import 'package:flutter/material.dart' as _i9;
|
||||
import 'package:auto_route/auto_route.dart' as _i10;
|
||||
import 'package:flutter/material.dart' as _i11;
|
||||
|
||||
import '../layouts/main/index.dart' as _i1;
|
||||
import '../screens/events/index.dart' as _i4;
|
||||
@@ -20,76 +20,106 @@ import '../screens/home/home_header.dart' as _i6;
|
||||
import '../screens/home/index.dart' as _i2;
|
||||
import '../screens/info/index.dart' as _i5;
|
||||
import '../screens/map/index.dart' as _i3;
|
||||
import '../screens/map/map_category.dart' as _i9;
|
||||
import '../screens/map/map_home.dart' as _i8;
|
||||
import '../screens/map/state.dart' as _i13;
|
||||
import '../screens/student_id/index.dart' as _i7;
|
||||
import 'index.dart' as _i12;
|
||||
|
||||
class AppRouter extends _i8.RootStackRouter {
|
||||
AppRouter([_i9.GlobalKey<_i9.NavigatorState>? navigatorKey])
|
||||
class AppRouter extends _i10.RootStackRouter {
|
||||
AppRouter([_i11.GlobalKey<_i11.NavigatorState>? navigatorKey])
|
||||
: super(navigatorKey);
|
||||
|
||||
@override
|
||||
final Map<String, _i8.PageFactory> pagesMap = {
|
||||
final Map<String, _i10.PageFactory> pagesMap = {
|
||||
MainLayout.name: (routeData) {
|
||||
return _i8.MaterialPageX<dynamic>(
|
||||
return _i10.MaterialPageX<dynamic>(
|
||||
routeData: routeData, child: const _i1.MainLayout());
|
||||
},
|
||||
HomePageRouter.name: (routeData) {
|
||||
return _i8.MaterialPageX<dynamic>(
|
||||
return _i10.MaterialPageX<dynamic>(
|
||||
routeData: routeData, child: const _i2.HomeScreen());
|
||||
},
|
||||
MapRoute.name: (routeData) {
|
||||
return _i8.MaterialPageX<dynamic>(
|
||||
return _i10.MaterialPageX<dynamic>(
|
||||
routeData: routeData, child: const _i3.MapScreen());
|
||||
},
|
||||
EventsRoute.name: (routeData) {
|
||||
return _i8.MaterialPageX<dynamic>(
|
||||
return _i10.MaterialPageX<dynamic>(
|
||||
routeData: routeData, child: const _i4.EventsScreen());
|
||||
},
|
||||
InfoRoute.name: (routeData) {
|
||||
return _i8.MaterialPageX<dynamic>(
|
||||
return _i10.MaterialPageX<dynamic>(
|
||||
routeData: routeData, child: const _i5.InfoScreen());
|
||||
},
|
||||
HomeRoute.name: (routeData) {
|
||||
return _i8.CustomPage<dynamic>(
|
||||
return _i10.CustomPage<dynamic>(
|
||||
routeData: routeData,
|
||||
child: const _i6.HomePageHeader(),
|
||||
transitionsBuilder: _i8.TransitionsBuilders.fadeIn,
|
||||
transitionsBuilder: _i10.TransitionsBuilders.fadeIn,
|
||||
opaque: true,
|
||||
barrierDismissible: false);
|
||||
},
|
||||
StudentIdRoute.name: (routeData) {
|
||||
return _i8.CustomPage<dynamic>(
|
||||
return _i10.CustomPage<dynamic>(
|
||||
routeData: routeData,
|
||||
child: const _i7.StudentIdScreen(),
|
||||
transitionsBuilder: _i8.TransitionsBuilders.fadeIn,
|
||||
transitionsBuilder: _i10.TransitionsBuilders.fadeIn,
|
||||
opaque: true,
|
||||
barrierDismissible: false);
|
||||
},
|
||||
MapHomeRoute.name: (routeData) {
|
||||
return _i10.CustomPage<dynamic>(
|
||||
routeData: routeData,
|
||||
child: const _i8.MapHomeScreen(),
|
||||
customRouteBuilder: _i12.mapRouteBuilder,
|
||||
opaque: true,
|
||||
barrierDismissible: false);
|
||||
},
|
||||
MapCategoryRoute.name: (routeData) {
|
||||
final args = routeData.argsAs<MapCategoryRouteArgs>();
|
||||
return _i10.CustomPage<dynamic>(
|
||||
routeData: routeData,
|
||||
child: _i9.MapCategoryScreen(category: args.category, key: args.key),
|
||||
customRouteBuilder: _i12.mapRouteBuilder,
|
||||
opaque: true,
|
||||
barrierDismissible: false);
|
||||
}
|
||||
};
|
||||
|
||||
@override
|
||||
List<_i8.RouteConfig> get routes => [
|
||||
_i8.RouteConfig(MainLayout.name, path: '/', children: [
|
||||
_i8.RouteConfig(HomePageRouter.name,
|
||||
List<_i10.RouteConfig> get routes => [
|
||||
_i10.RouteConfig(MainLayout.name, path: '/', children: [
|
||||
_i10.RouteConfig(HomePageRouter.name,
|
||||
path: 'home',
|
||||
parent: MainLayout.name,
|
||||
children: [
|
||||
_i8.RouteConfig(HomeRoute.name,
|
||||
_i10.RouteConfig(HomeRoute.name,
|
||||
path: '', parent: HomePageRouter.name),
|
||||
_i8.RouteConfig(StudentIdRoute.name,
|
||||
_i10.RouteConfig(StudentIdRoute.name,
|
||||
path: 'student-id', parent: HomePageRouter.name)
|
||||
]),
|
||||
_i8.RouteConfig(MapRoute.name, path: 'map', parent: MainLayout.name),
|
||||
_i8.RouteConfig(EventsRoute.name,
|
||||
_i10.RouteConfig(MapRoute.name,
|
||||
path: 'map',
|
||||
parent: MainLayout.name,
|
||||
children: [
|
||||
_i10.RouteConfig(MapHomeRoute.name,
|
||||
path: '', parent: MapRoute.name),
|
||||
_i10.RouteConfig(MapCategoryRoute.name,
|
||||
path: 'category/:id', parent: MapRoute.name)
|
||||
]),
|
||||
_i10.RouteConfig(EventsRoute.name,
|
||||
path: 'events', parent: MainLayout.name),
|
||||
_i8.RouteConfig(InfoRoute.name, path: 'info', parent: MainLayout.name)
|
||||
_i10.RouteConfig(InfoRoute.name,
|
||||
path: 'info', parent: MainLayout.name)
|
||||
])
|
||||
];
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i1.MainLayout]
|
||||
class MainLayout extends _i8.PageRouteInfo<void> {
|
||||
const MainLayout({List<_i8.PageRouteInfo>? children})
|
||||
class MainLayout extends _i10.PageRouteInfo<void> {
|
||||
const MainLayout({List<_i10.PageRouteInfo>? children})
|
||||
: super(MainLayout.name, path: '/', initialChildren: children);
|
||||
|
||||
static const String name = 'MainLayout';
|
||||
@@ -97,8 +127,8 @@ class MainLayout extends _i8.PageRouteInfo<void> {
|
||||
|
||||
/// generated route for
|
||||
/// [_i2.HomeScreen]
|
||||
class HomePageRouter extends _i8.PageRouteInfo<void> {
|
||||
const HomePageRouter({List<_i8.PageRouteInfo>? children})
|
||||
class HomePageRouter extends _i10.PageRouteInfo<void> {
|
||||
const HomePageRouter({List<_i10.PageRouteInfo>? children})
|
||||
: super(HomePageRouter.name, path: 'home', initialChildren: children);
|
||||
|
||||
static const String name = 'HomePageRouter';
|
||||
@@ -106,15 +136,16 @@ class HomePageRouter extends _i8.PageRouteInfo<void> {
|
||||
|
||||
/// generated route for
|
||||
/// [_i3.MapScreen]
|
||||
class MapRoute extends _i8.PageRouteInfo<void> {
|
||||
const MapRoute() : super(MapRoute.name, path: 'map');
|
||||
class MapRoute extends _i10.PageRouteInfo<void> {
|
||||
const MapRoute({List<_i10.PageRouteInfo>? children})
|
||||
: super(MapRoute.name, path: 'map', initialChildren: children);
|
||||
|
||||
static const String name = 'MapRoute';
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i4.EventsScreen]
|
||||
class EventsRoute extends _i8.PageRouteInfo<void> {
|
||||
class EventsRoute extends _i10.PageRouteInfo<void> {
|
||||
const EventsRoute() : super(EventsRoute.name, path: 'events');
|
||||
|
||||
static const String name = 'EventsRoute';
|
||||
@@ -122,7 +153,7 @@ class EventsRoute extends _i8.PageRouteInfo<void> {
|
||||
|
||||
/// generated route for
|
||||
/// [_i5.InfoScreen]
|
||||
class InfoRoute extends _i8.PageRouteInfo<void> {
|
||||
class InfoRoute extends _i10.PageRouteInfo<void> {
|
||||
const InfoRoute() : super(InfoRoute.name, path: 'info');
|
||||
|
||||
static const String name = 'InfoRoute';
|
||||
@@ -130,7 +161,7 @@ class InfoRoute extends _i8.PageRouteInfo<void> {
|
||||
|
||||
/// generated route for
|
||||
/// [_i6.HomePageHeader]
|
||||
class HomeRoute extends _i8.PageRouteInfo<void> {
|
||||
class HomeRoute extends _i10.PageRouteInfo<void> {
|
||||
const HomeRoute() : super(HomeRoute.name, path: '');
|
||||
|
||||
static const String name = 'HomeRoute';
|
||||
@@ -138,8 +169,40 @@ class HomeRoute extends _i8.PageRouteInfo<void> {
|
||||
|
||||
/// generated route for
|
||||
/// [_i7.StudentIdScreen]
|
||||
class StudentIdRoute extends _i8.PageRouteInfo<void> {
|
||||
class StudentIdRoute extends _i10.PageRouteInfo<void> {
|
||||
const StudentIdRoute() : super(StudentIdRoute.name, path: 'student-id');
|
||||
|
||||
static const String name = 'StudentIdRoute';
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i8.MapHomeScreen]
|
||||
class MapHomeRoute extends _i10.PageRouteInfo<void> {
|
||||
const MapHomeRoute() : super(MapHomeRoute.name, path: '');
|
||||
|
||||
static const String name = 'MapHomeRoute';
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i9.MapCategoryScreen]
|
||||
class MapCategoryRoute extends _i10.PageRouteInfo<MapCategoryRouteArgs> {
|
||||
MapCategoryRoute({required _i13.MapCategory category, _i11.Key? key})
|
||||
: super(MapCategoryRoute.name,
|
||||
path: 'category/:id',
|
||||
args: MapCategoryRouteArgs(category: category, key: key));
|
||||
|
||||
static const String name = 'MapCategoryRoute';
|
||||
}
|
||||
|
||||
class MapCategoryRouteArgs {
|
||||
const MapCategoryRouteArgs({required this.category, this.key});
|
||||
|
||||
final _i13.MapCategory category;
|
||||
|
||||
final _i11.Key? key;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'MapCategoryRouteArgs{category: $category, key: $key}';
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user