generalRoutes top-level property
final
Implementation
final generalRoutes = [
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.forward.name,
path: Routes.forward.route,
redirect: forwardRedirect,
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.intro.name,
path: Routes.intro.route,
builder: (context, state) => const IntroPage(),
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.introProfile.name,
path: Routes.introProfile.route,
builder: (context, state) => const IntroProfile(),
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.authLogin.name,
path: Routes.authLogin.route,
builder: (context, state) => const LoginPage(),
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.forgotPassword.name,
path: Routes.forgotPassword.route,
builder: (context, state) => const ForgotPassword(),
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.authRegister.name,
path: Routes.authRegister.route,
builder: (context, state) => const RegisterPage(),
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.saveUsername.name,
path: Routes.saveUsername.route,
builder: (context, state) =>
SaveUsernamePage(username: state.uri.queryParameters['username']!),
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.linkEmail.name,
path: Routes.linkEmail.route,
builder: (context, state) => LinkEmailPage(),
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.uploadAvatar.name,
path: Routes.uploadAvatar.route,
builder: (context, state) => UploadAvatarPage(),
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.analyticsOptIn.name,
path: Routes.analyticsOptIn.route,
builder: (context, state) => const AnalyticsOptInPage(),
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.bugReport.name,
path: Routes.bugReport.route,
pageBuilder: (context, state) => DialogPage(
builder: (BuildContext context) => BugReportPage(
imagePath: state.uri.queryParameters['screenshot'],
error: state.uri.queryParameters['error'],
stack: state.uri.queryParameters['stack'],
),
),
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.fatalFail.name,
path: Routes.fatalFail.route,
builder: (context, state) => FatalFailPage(
error: state.uri.queryParameters['error']!,
trace: state.uri.queryParameters['trace']!,
),
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.quickJump.name,
path: Routes.quickJump.route,
pageBuilder: (context, state) => DialogPage(
builder: (BuildContext context) => const QuickjumpDialog(),
),
),
GoRoute(
name: Routes.createPin.name,
path: Routes.createPin.route,
pageBuilder: (context, state) {
return NoTransitionPage(
key: state.pageKey,
child: CreatePinPage(
initialSelectedSpace: state.uri.queryParameters['spaceId'],
),
);
},
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.actionCreateSuperInvite.name,
path: Routes.actionCreateSuperInvite.route,
pageBuilder: (context, state) {
return SideSheetPage(
key: state.pageKey,
transitionsBuilder: (context, animation, secondaryAnimation, child) {
return SlideTransition(
position: Tween(
begin: const Offset(1, 0),
end: const Offset(0, 0),
).animate(
animation,
),
child: child,
);
},
child: CreateSuperInviteTokenPage(
token: state.extra != null ? state.extra as SuperInviteToken : null,
),
);
},
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.linkChat.name,
path: Routes.linkChat.route,
pageBuilder: (context, state) {
return SideSheetPage(
key: state.pageKey,
transitionsBuilder: (context, animation, secondaryAnimation, child) {
return SlideTransition(
position: Tween(
begin: const Offset(1, 0),
end: const Offset(0, 0),
).animate(
animation,
),
child: child,
);
},
child: LinkRoomPage(
parentSpaceId: state.pathParameters['spaceId']!,
pageTitle: 'Link as Space-chat',
childRoomType: ChildRoomType.chat,
),
);
},
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.linkSubspace.name,
path: Routes.linkSubspace.route,
pageBuilder: (context, state) {
return SideSheetPage(
key: state.pageKey,
transitionsBuilder: (context, animation, secondaryAnimation, child) {
return SlideTransition(
position: Tween(
begin: const Offset(1, 0),
end: const Offset(0, 0),
).animate(
animation,
),
child: child,
);
},
child: LinkRoomPage(
parentSpaceId: state.pathParameters['spaceId']!,
pageTitle: 'Link Sub-Space',
childRoomType: ChildRoomType.space,
),
);
},
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.linkRecommended.name,
path: Routes.linkRecommended.route,
pageBuilder: (context, state) {
return SideSheetPage(
key: state.pageKey,
transitionsBuilder: (context, animation, secondaryAnimation, child) {
return SlideTransition(
position: Tween(
begin: const Offset(1, 0),
end: const Offset(0, 0),
).animate(
animation,
),
child: child,
);
},
child: LinkRoomPage(
parentSpaceId: state.pathParameters['spaceId']!,
pageTitle: 'Link Recommended-Space',
childRoomType: ChildRoomType.recommendedSpace,
),
);
},
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.actionAddUpdate.name,
path: Routes.actionAddUpdate.route,
redirect: authGuardRedirect,
pageBuilder: (context, state) {
return NoTransitionPage(
key: state.pageKey,
child: AddNewsPage(
initialSelectedSpace: state.uri.queryParameters['spaceId'],
),
);
},
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.createChat.name,
path: Routes.createChat.route,
pageBuilder: (context, state) {
return context.isLargeScreen
? DialogPage(
barrierDismissible: false,
builder: (context) => CreateChatPage(
initialSelectedSpaceId: state.uri.queryParameters['spaceId'],
initialPage: state.extra as int?,
),
)
: CustomTransitionPage(
transitionsBuilder:
(context, animation, secondaryAnimation, child) {
var begin = const Offset(0.0, 1.0);
var end = Offset.zero;
var curve = Curves.easeInOut;
var tween = Tween(begin: begin, end: end)
.chain(CurveTween(curve: curve));
var offsetAnimation = animation.drive(tween);
return SlideTransition(
position: offsetAnimation,
child: child,
);
},
child: CreateChatPage(
initialSelectedSpaceId: state.uri.queryParameters['spaceId'],
initialPage: state.extra as int?,
),
);
},
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.fullScreenAvatar.name,
path: Routes.fullScreenAvatar.route,
pageBuilder: (context, state) {
return NoTransitionPage(
key: state.pageKey,
child: FullScreenAvatarPage(
roomId: state.uri.queryParameters['roomId']!,
),
);
},
),
GoRoute(
parentNavigatorKey: rootNavKey,
name: Routes.main.name,
path: Routes.main.route,
redirect: (BuildContext context, GoRouterState state) async {
// we first check if there is a client available for us to use
final authGuarded = await authGuardRedirect(context, state);
if (authGuarded != null) {
return authGuarded;
}
if (context.mounted && isDesktop) {
return Routes.dashboard.route;
} else {
return Routes.updates.route;
}
},
),
];