Sonnat Project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.8 KiB

1 year ago
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter_bloc/flutter_bloc.dart';
  3. import 'package:sonnat/core/extensions/context_extension.dart';
  4. import 'package:sonnat/core/extensions/string_extension.dart';
  5. import 'package:sonnat/core/select_language/cubit/select_language_cubit.dart';
  6. import 'package:sonnat/core/select_language/screen/select_language_screen.dart';
  7. import 'package:sonnat/core/utils/app_constants.dart';
  8. import 'package:sonnat/core/utils/base_cubit_type.dart';
  9. import 'package:sonnat/features/main/main_screen.dart';
  10. import 'package:sonnat/features/splash/cubit/splash_cubit.dart';
  11. class SplashScreen extends StatefulWidget {
  12. const SplashScreen({super.key});
  13. @override
  14. State<SplashScreen> createState() => _SplashScreenState();
  15. }
  16. class _SplashScreenState extends State<SplashScreen> {
  17. late final SplashCubit _cubit;
  18. @override
  19. void initState() {
  20. _cubit = BlocProvider.of<SplashCubit>(context);
  21. Future.delayed(const Duration(milliseconds: 2500), _cubit.checkLanguageSet);
  22. super.initState();
  23. }
  24. @override
  25. Widget build(BuildContext context) {
  26. return Scaffold(
  27. backgroundColor: const Color(0xff26237A),
  28. body: BlocBuilder<SplashCubit, BaseCubitType<SplashCubitState>>(
  29. builder: (context, state) {
  30. switch (state.eventName!) {
  31. case SplashCubitState.empty:
  32. break;
  33. case SplashCubitState.set:
  34. WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
  35. Navigator.push(
  36. context,
  37. MaterialPageRoute(
  38. builder: (context) {
  39. return const MainScreen();
  40. },
  41. ),
  42. );
  43. });
  44. break;
  45. case SplashCubitState.notSet:
  46. WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
  47. Navigator.push(
  48. context,
  49. MaterialPageRoute(
  50. builder: (context) {
  51. return BlocProvider(
  52. create: (context) => SelectLanguageCubit(),
  53. child: const SelectLanguageScreen(),
  54. );
  55. },
  56. ),
  57. );
  58. });
  59. break;
  60. }
  61. return Center(
  62. child: Container(
  63. margin: EdgeInsets.only(
  64. left: context.width * 86 / AppConstants.instance.appWidth,
  65. right: context.width * 86 / AppConstants.instance.appWidth,
  66. ),
  67. child: Image.asset(
  68. 'ic_main_header'.pngPath,
  69. width: context.width * 200 / AppConstants.instance.appWidth,
  70. height: context.height * 200 / AppConstants.instance.appHeight,
  71. ),
  72. ),
  73. );
  74. },
  75. ),
  76. );
  77. }
  78. }