Files
syncrow-app/lib/features/splash/view/splash_view.dart

78 lines
2.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_app/features/auth/bloc/auth_cubit.dart';
import 'package:syncrow_app/features/auth/view/login_view.dart';
import 'package:syncrow_app/generated/assets.dart';
import 'package:syncrow_app/navigation/routing_constants.dart';
import 'package:syncrow_app/utils/helpers/custom_page_route.dart';
class SplashView extends StatefulWidget {
const SplashView({super.key});
@override
State<SplashView> createState() => _SplashViewState();
}
class _SplashViewState extends State<SplashView> {
@override
void initState() {
AuthCubit.get(context).getTokenAndValidate();
super.initState();
}
@override
Widget build(BuildContext context) {
return BlocConsumer<AuthCubit, AuthState>(
listener: (context, state) {
if (state is AuthTokenSuccess) {
Navigator.pushNamedAndRemoveUntil(context, Routes.homeRoute, (route) => false);
} else if (state is AuthTokenError) {
Future.delayed(const Duration(seconds: 2), () {
Navigator.pushReplacement(
context,
CustomPageRoute(builder: (context) => const LoginView()),
);
});
}
},
builder: (context, state) {
return Scaffold(
body: Stack(
alignment: Alignment.center,
children: [
Container(
width: MediaQuery.sizeOf(context).width,
height: MediaQuery.sizeOf(context).height,
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage(
Assets.assetsImagesBackground,
),
fit: BoxFit.cover,
),
),
),
Container(
width: MediaQuery.sizeOf(context).width,
height: MediaQuery.sizeOf(context).height,
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage(Assets.assetsImagesVector),
fit: BoxFit.cover,
opacity: 0.9,
),
),
),
SvgPicture.asset(
Assets.assetsImagesLogo,
width: 240,
)
],
),
);
},
);
}
}