Files
Krow-workspace/mobile-apps/staff-app/lib/features/auth/auth_flow_screen.dart

58 lines
1.5 KiB
Dart

import 'package:app_links/app_links.dart';
import 'package:auto_route/auto_route.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow/app.dart';
import 'package:krow/features/auth/domain/bloc/auth_bloc.dart';
import 'package:krow/core/application/routing/routes.gr.dart';
@RoutePage()
class AuthFlowScreen extends StatefulWidget implements AutoRouteWrapper {
const AuthFlowScreen({super.key});
@override
State<AuthFlowScreen> createState() => _AuthFlowScreenState();
@override
Widget wrappedRoute(BuildContext context) {
return BlocProvider(
create: (_) => AuthBloc(),
child: this,
);
}
}
class _AuthFlowScreenState extends State<AuthFlowScreen> {
@override
void initState() {
super.initState();
final context = this.context;
AppLinks().getInitialLink().then(
(initialLink) {
if (initialLink == null || !context.mounted) return;
context
.read<AuthBloc>()
.add(SignInWithInitialLink(initialLink: initialLink));
},
);
}
@override
Widget build(BuildContext context) {
return BlocListener<AuthBloc, AuthState>(
listener: (context, state) {
if (state.autentificated) {
if (state.authType == AuthType.login) {
appRouter.replace(const SplashRoute());
} else {
appRouter.replace(const SignupFlowRoute());
}
}
},
child: const AutoRouter(),
);
}
}