import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../../core/build_config.dart'; import '../../../core/config.dart'; import '../../../core/design/tokens.dart'; import '../../../core/design/tripz_colors.dart'; import '../../../core/l10n/l10n.dart'; import '../../../core/session/session_cubit.dart'; import '../../../core/tenant/tenant_cubit.dart'; /// شاشة الإقلاع: تستعيد الجلسة ثم يتولّى الراوتر التوجيه. لا تنقّل من هنا — /// قرار الوجهة في مكان واحد (`core/router.dart`). class SplashPage extends StatefulWidget { const SplashPage({super.key}); @override State createState() => _SplashPageState(); } class _SplashPageState extends State { @override void initState() { super.initState(); // بعد أول إطار: `restore` قد يُصدر حالة فوراً، وإصدارها أثناء البناء خطأ. WidgetsBinding.instance.addPostFrameCallback((_) { if (!mounted) return; // إعداد المستأجر بلا توكن — يُجلب بالتوازي مع استعادة الجلسة لا بعدها. context.read().load(); context.read().restore(); }); } @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ Image.asset(BuildConfig.logoAsset, width: 140, height: 140), const SizedBox(height: Space.lg), Text( BuildConfig.appName, style: context.texts.headlineMedium?.copyWith( color: context.colors.primary, ), ), const SizedBox(height: Space.xs), Text( AppConfig.appRole == 'driver' ? context.l10n.splashDriver : context.l10n.splashRider, style: context.texts.bodyMedium?.copyWith( color: context.colors.onSurfaceVariant, ), ), const SizedBox(height: Space.xl), const SizedBox( width: 28, height: 28, child: CircularProgressIndicator(strokeWidth: 2.5), ), ], ), ), ); } }