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.
		
		
		
		
		
			
		
			
				
					
					
						
							63 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							63 lines
						
					
					
						
							2.1 KiB
						
					
					
				| import 'package:flutter/material.dart'; | |
| import 'package:flutter_bloc/flutter_bloc.dart'; | |
| import 'package:hadi_hoda_flutter/common_ui/resources/my_colors.dart'; | |
| import 'package:hadi_hoda_flutter/common_ui/resources/my_spaces.dart'; | |
| import 'package:hadi_hoda_flutter/common_ui/resources/my_text_style.dart'; | |
| import 'package:hadi_hoda_flutter/core/utils/my_localization.dart'; | |
| import 'package:hadi_hoda_flutter/features/intro/presentation/bloc/intro_bloc.dart'; | |
| import 'package:hadi_hoda_flutter/features/intro/presentation/bloc/intro_event.dart'; | |
| import 'package:hadi_hoda_flutter/features/intro/presentation/bloc/intro_state.dart'; | |
| 
 | |
| class IntroPage extends StatelessWidget { | |
|   const IntroPage({super.key}); | |
| 
 | |
|   @override | |
|   Widget build(BuildContext context) { | |
|     return Scaffold( | |
|       body: SizedBox.expand( | |
|         child: GestureDetector( | |
|           onTap: () => context.read<IntroBloc>().add(ChangeIntroEvent()), | |
|           child: Stack( | |
|             children: [ | |
|               _mainScreen(), | |
|               _skipButton(context), | |
|             ], | |
|           ), | |
|         ), | |
|       ), | |
|     ); | |
|   } | |
| 
 | |
|   BlocBuilder<IntroBloc, IntroState> _mainScreen() { | |
|     return BlocBuilder<IntroBloc, IntroState>( | |
|       builder: (context, state) => AnimatedSwitcher( | |
|         duration: Duration(milliseconds: 200), | |
|         reverseDuration: Duration(milliseconds: 200), | |
|         switchInCurve: Curves.linear, | |
|         switchOutCurve: Curves.linear, | |
|         child: context.read<IntroBloc>().intros[state.currentIntro], | |
|         transitionBuilder: (child, animation) => | |
|             FadeTransition(opacity: animation, child: child), | |
|       ), | |
|     ); | |
|   } | |
| 
 | |
|   PositionedDirectional _skipButton(BuildContext context) { | |
|     return PositionedDirectional( | |
|       start: MySpaces.s30, | |
|       bottom: MySpaces.s16, | |
|       child: TextButton( | |
|         onPressed: () => context.read<IntroBloc>().goToLevelPage(), | |
|         style: TextButton.styleFrom( | |
|           foregroundColor: MyColors.white.withValues(alpha: 0.7), | |
|         ), | |
|         child: Text( | |
|           context.translate.skip, | |
|           style: MYTextStyle.button2.copyWith( | |
|             color: MyColors.white.withValues(alpha: 0.7), | |
|           ), | |
|         ), | |
|       ), | |
|     ); | |
|   } | |
| }
 |