v1 release
This commit is contained in:
commit
cb24b68069
116 changed files with 4913 additions and 0 deletions
18
lib/presentation/routes/account_guard.dart
Normal file
18
lib/presentation/routes/account_guard.dart
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
import "package:auto_route/auto_route.dart";
|
||||
import "package:flash_mail/data/providers/providers.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
|
||||
class AccountGuard extends AutoRouteGuard {
|
||||
final WidgetRef ref;
|
||||
|
||||
AccountGuard(this.ref);
|
||||
|
||||
@override
|
||||
void onNavigation(NavigationResolver resolver, StackRouter router) {
|
||||
if (!ref.read(accountProvider).isAuthenticated()) {
|
||||
router.replaceNamed("/");
|
||||
} else {
|
||||
resolver.next(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
37
lib/presentation/routes/app_router.dart
Normal file
37
lib/presentation/routes/app_router.dart
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
import "package:auto_route/auto_route.dart";
|
||||
import "package:flash_mail/presentation/routes/account_guard.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
|
||||
import "package:flash_mail/presentation/routes/auth_guard.dart";
|
||||
|
||||
import "app_router.gr.dart";
|
||||
|
||||
@AutoRouterConfig(replaceInRouteName: "Screen,Route")
|
||||
class AppRouter extends $AppRouter {
|
||||
final WidgetRef ref;
|
||||
|
||||
AppRouter(this.ref);
|
||||
|
||||
@override
|
||||
List<AutoRoute> get routes => [
|
||||
AutoRoute(
|
||||
page: AccountRoute.page,
|
||||
path: "/",
|
||||
initial: true,
|
||||
guards: [AuthGuard(ref)],
|
||||
),
|
||||
AutoRoute(
|
||||
page: LoginRoute.page,
|
||||
path: "/login",
|
||||
),
|
||||
AutoRoute(
|
||||
page: InboxRoute.page,
|
||||
path: "/inbox",
|
||||
guards: [AccountGuard(ref)],
|
||||
),
|
||||
AutoRoute(
|
||||
page: MessageDetailRoute.page,
|
||||
path: "/message",
|
||||
)
|
||||
];
|
||||
}
|
||||
139
lib/presentation/routes/app_router.gr.dart
Normal file
139
lib/presentation/routes/app_router.gr.dart
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
// **************************************************************************
|
||||
// AutoRouterGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// ignore_for_file: type=lint
|
||||
// coverage:ignore-file
|
||||
|
||||
// ignore_for_file: no_leading_underscores_for_library_prefixes
|
||||
import 'package:auto_route/auto_route.dart' as _i5;
|
||||
import 'package:flash_mail/presentation/screens/account_screen.dart' as _i1;
|
||||
import 'package:flash_mail/presentation/screens/inbox_screen.dart' as _i2;
|
||||
import 'package:flash_mail/presentation/screens/login_screen.dart' as _i3;
|
||||
import 'package:flash_mail/presentation/screens/message_detail_screen.dart'
|
||||
as _i4;
|
||||
import 'package:flutter/material.dart' as _i6;
|
||||
|
||||
abstract class $AppRouter extends _i5.RootStackRouter {
|
||||
$AppRouter({super.navigatorKey});
|
||||
|
||||
@override
|
||||
final Map<String, _i5.PageFactory> pagesMap = {
|
||||
AccountRoute.name: (routeData) {
|
||||
return _i5.AutoRoutePage<dynamic>(
|
||||
routeData: routeData,
|
||||
child: const _i1.AccountScreen(),
|
||||
);
|
||||
},
|
||||
InboxRoute.name: (routeData) {
|
||||
return _i5.AutoRoutePage<dynamic>(
|
||||
routeData: routeData,
|
||||
child: const _i2.InboxScreen(),
|
||||
);
|
||||
},
|
||||
LoginRoute.name: (routeData) {
|
||||
return _i5.AutoRoutePage<dynamic>(
|
||||
routeData: routeData,
|
||||
child: const _i3.LoginScreen(),
|
||||
);
|
||||
},
|
||||
MessageDetailRoute.name: (routeData) {
|
||||
final args = routeData.argsAs<MessageDetailRouteArgs>();
|
||||
return _i5.AutoRoutePage<dynamic>(
|
||||
routeData: routeData,
|
||||
child: _i4.MessageDetailScreen(
|
||||
key: args.key,
|
||||
id: args.id,
|
||||
subject: args.subject,
|
||||
),
|
||||
);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i1.AccountScreen]
|
||||
class AccountRoute extends _i5.PageRouteInfo<void> {
|
||||
const AccountRoute({List<_i5.PageRouteInfo>? children})
|
||||
: super(
|
||||
AccountRoute.name,
|
||||
initialChildren: children,
|
||||
);
|
||||
|
||||
static const String name = 'AccountRoute';
|
||||
|
||||
static const _i5.PageInfo<void> page = _i5.PageInfo<void>(name);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i2.InboxScreen]
|
||||
class InboxRoute extends _i5.PageRouteInfo<void> {
|
||||
const InboxRoute({List<_i5.PageRouteInfo>? children})
|
||||
: super(
|
||||
InboxRoute.name,
|
||||
initialChildren: children,
|
||||
);
|
||||
|
||||
static const String name = 'InboxRoute';
|
||||
|
||||
static const _i5.PageInfo<void> page = _i5.PageInfo<void>(name);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i3.LoginScreen]
|
||||
class LoginRoute extends _i5.PageRouteInfo<void> {
|
||||
const LoginRoute({List<_i5.PageRouteInfo>? children})
|
||||
: super(
|
||||
LoginRoute.name,
|
||||
initialChildren: children,
|
||||
);
|
||||
|
||||
static const String name = 'LoginRoute';
|
||||
|
||||
static const _i5.PageInfo<void> page = _i5.PageInfo<void>(name);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [_i4.MessageDetailScreen]
|
||||
class MessageDetailRoute extends _i5.PageRouteInfo<MessageDetailRouteArgs> {
|
||||
MessageDetailRoute({
|
||||
_i6.Key? key,
|
||||
required String id,
|
||||
required String subject,
|
||||
List<_i5.PageRouteInfo>? children,
|
||||
}) : super(
|
||||
MessageDetailRoute.name,
|
||||
args: MessageDetailRouteArgs(
|
||||
key: key,
|
||||
id: id,
|
||||
subject: subject,
|
||||
),
|
||||
initialChildren: children,
|
||||
);
|
||||
|
||||
static const String name = 'MessageDetailRoute';
|
||||
|
||||
static const _i5.PageInfo<MessageDetailRouteArgs> page =
|
||||
_i5.PageInfo<MessageDetailRouteArgs>(name);
|
||||
}
|
||||
|
||||
class MessageDetailRouteArgs {
|
||||
const MessageDetailRouteArgs({
|
||||
this.key,
|
||||
required this.id,
|
||||
required this.subject,
|
||||
});
|
||||
|
||||
final _i6.Key? key;
|
||||
|
||||
final String id;
|
||||
|
||||
final String subject;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'MessageDetailRouteArgs{key: $key, id: $id, subject: $subject}';
|
||||
}
|
||||
}
|
||||
18
lib/presentation/routes/auth_guard.dart
Normal file
18
lib/presentation/routes/auth_guard.dart
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
import "package:auto_route/auto_route.dart";
|
||||
import "package:flash_mail/data/providers/providers.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
|
||||
class AuthGuard extends AutoRouteGuard {
|
||||
final WidgetRef ref;
|
||||
|
||||
AuthGuard(this.ref);
|
||||
|
||||
@override
|
||||
void onNavigation(NavigationResolver resolver, StackRouter router) {
|
||||
if (ref.read(accountProvider).isAuthenticated()) {
|
||||
router.replaceNamed("/inbox");
|
||||
} else {
|
||||
resolver.next(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue