mobile_adaptive_learning/lib/features/splash/screens/splash_screen.dart

111 lines
3.7 KiB
Dart

import 'package:english_learning/features/auth/provider/user_provider.dart';
import 'package:english_learning/features/auth/screens/signin/signin_screen.dart';
import 'package:english_learning/features/home/screens/home_screen.dart';
import 'package:english_learning/features/welcome/screens/welcome_screen.dart';
import 'package:english_learning/core/utils/styles/theme.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
class SplashScreen extends StatefulWidget {
const SplashScreen({super.key});
@override
State<SplashScreen> createState() => _SplashScreenState();
}
class _SplashScreenState extends State<SplashScreen> {
bool _showLogo = true;
@override
void initState() {
super.initState();
_checkLoginStatus();
Future.delayed(const Duration(seconds: 2), () {
setState(() {
_showLogo = false;
});
});
}
Future<void> _checkLoginStatus() async {
final userProvider = Provider.of<UserProvider>(context, listen: false);
final prefs = await SharedPreferences.getInstance();
// Mengecek apakah sudah login
bool isLoggedIn = userProvider.isLoggedIn;
bool isFirstInstall = prefs.getBool('isFirstInstall') ?? true;
Future.delayed(const Duration(seconds: 4), () {
if (isLoggedIn) {
// Jika sudah login, arahkan ke HomeScreen
Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (_) => const HomeScreen()),
);
} else if (isFirstInstall) {
// Jika pertama kali install, tampilkan WelcomeScreen
prefs.setBool('isFirstInstall', false);
Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (_) => const WelcomeScreen()),
);
} else {
// Jika sudah pernah install tetapi belum login, arahkan ke SigninScreen
Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (_) => const SigninScreen()),
);
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
width: double.infinity,
decoration: const BoxDecoration(
color: AppColors.blueColor,
image: DecorationImage(
image: AssetImage('lib/features/splash/assets/images/splash.png'),
fit: BoxFit.cover,
),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
AnimatedSwitcher(
duration: const Duration(seconds: 1),
child: _showLogo
? Row(
key: const ValueKey('logo'),
mainAxisAlignment: MainAxisAlignment.center,
children: [
SvgPicture.asset(
'lib/features/splash/assets/images/Logo.svg',
width: 35,
),
const SizedBox(
width: 3,
),
Text(
'SEALS',
style: AppTextStyles.logoTextStyle,
),
],
)
: Text(
'Smart\nEnglish\nAdaptive\nLearning\nSystem',
key: const ValueKey('text'),
style: AppTextStyles.logoTextStyle,
textAlign: TextAlign.left,
),
),
],
),
),
);
}
}