Files
Tanami_App/lib/features/splash/presentation/pages/splash_screen.dart
2024-07-26 16:54:11 +05:30

77 lines
3.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:tanami_app/Globalconst.dart';
import 'package:tanami_app/core/routes/route_name.dart';
import 'package:tanami_app/core/routes/routes.dart';
import '../../../../core/styles/app_color.dart';
import '../../../../core/utils/secure/secure_storage_service.dart';
import '../../../languageChange/presentation/bloc/text_bloc/text_bloc.dart';
import '../../../languageChange/presentation/bloc/text_bloc/text_event.dart';
import '../bloc/app_version/app_version_bloc.dart';
import '../bloc/app_version/app_version_event.dart';
import '../bloc/splash/splash_bloc.dart';
import '../bloc/splash/splash_event.dart';
import '../bloc/splash/splash_state.dart';
import 'splash_layout.dart';
class SplashScreen extends StatelessWidget {
const SplashScreen({super.key});
@override
Widget build(BuildContext context) {
final SharedPreferenceLocalData secureStorageService =
SharedPreferenceLocalData();
return Scaffold(
backgroundColor: AppColor.plainWhite,
body: MultiBlocProvider(
providers: [
// Add the LoadAppVersion event.
BlocProvider(
create: (_) => AppVersionBloc()..add(LoadAppVersion()),
),
// Add the StartSplashScreenTimer event.
BlocProvider(
create: (_) => SplashBloc()..add(StartSplashScreenTimer()),
),
],
// Set the child of the MultiBlocProvider to a BlocListener widget
child: BlocListener<SplashBloc, SplashState>(
// Define the listener function for the BlocListener widget
listener: (context, state) async {
// Check if the current state is SplashCompleted
if (state is SplashCompleted) {
String? languageSelected =
await secureStorageService.read('languageSelected');
context.read<TextLanguageBloc>().add(ButtonPressed(
languageSelected == "en" ? "English" : "اللغة العربية"));
if (await secureStorageService.read('isLoginedIn') == null) {
goRouter.goNamed(RouteName.welcomeScreen);
} else {
if (await secureStorageService.read('isLoginedIn') == "false") {
// Navigate to the WelcomeScreen using the goRouter
goRouter.goNamed(RouteName.welcomeScreen);
} else {
if (await secureStorageService.read('biometric') != null &&
await secureStorageService.read('biometric') == 'on') {
goRouter.goNamed(RouteName.biometricScreen);
} else {
Globalconst.firstName =
await secureStorageService.read("first_name") ?? "";
goRouter.goNamed(RouteName.pinScreen, pathParameters: {
"fromScreen": "LoginedInUser",
});
}
}
}
}
},
child: const SplashLayout(),
),
),
);
}
}