25-10-2/1

This commit is contained in:
Hamza-Ayed
2025-10-02 01:20:16 +03:00
parent 7595be8067
commit c48627a175
342 changed files with 15825 additions and 14862 deletions

View File

@@ -1,133 +1,136 @@
import 'package:animated_text_kit/animated_text_kit.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:shimmer/shimmer.dart'; // Added for a premium shimmer effect
import 'package:Intaleq/constant/colors.dart';
import 'package:Intaleq/constant/info.dart';
import 'package:Intaleq/constant/style.dart';
import 'package:Intaleq/constant/box_name.dart';
import 'package:Intaleq/main.dart';
import 'constant/box_name.dart';
import 'controller/home/splash_screen_controlle.dart';
import 'main.dart';
// شاشة بداية بتصميم جديد وحركات وألوان محسّنة
class SplashScreen extends StatelessWidget {
final SplashScreenController splashScreenController =
Get.put(SplashScreenController());
SplashScreen({super.key});
const SplashScreen({super.key});
@override
Widget build(BuildContext context) {
// Using SafeArea to prevent UI overlap with system notches or bars
// تهيئة الكنترولر
final SplashScreenController controller = Get.put(SplashScreenController());
// تعريف الألوان المستخدمة في حركة اسم التطبيق
const colorizeColors = [
Colors.white,
Color(0xFF89D4CF), // لون تركواز فاتح
Color(0xFF734AE8), // لون بنفسجي مشرق
Colors.white,
];
return SafeArea(
child: Scaffold(
body: Container(
// The gradient background is maintained from your original design.
// --- تحسين الألوان ---
// تم استخدام تدرج لوني جديد أكثر حيوية وعصرية
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
AppColor.primaryColor,
AppColor.secondaryColor,
Color(0xFF2E3192), // أزرق داكن
Color(0xFF1BFFFF), // سماوي ساطع
],
),
),
// Using a Stack to layer the main content and the footer.
child: Stack(
children: [
// Main animated content (logo and titles) centered on the screen.
// دوائر زخرفية لإضافة عمق للتصميم
_buildDecorativeCircles(),
// المحتوى الرئيسي مع الحركات المتتالية
Center(
child: GetBuilder<SplashScreenController>(
builder: (_) {
// The initial animation is preserved for the overall entrance
return ScaleTransition(
scale: splashScreenController.animation,
child: FadeTransition(
opacity: splashScreenController.animation,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// Logo remains the same
Image.asset(
'assets/images/logo.gif',
width: Get.width * 0.35,
),
const SizedBox(height: 24),
// IMPROVEMENT: Added a Shimmer effect for a more dynamic title
Shimmer.fromColors(
baseColor: AppColor.writeColor,
highlightColor: Colors.grey.shade400,
child: Text(
AppInformation.appName,
style: AppStyle.headTitle.copyWith(
color: AppColor.writeColor,
fontSize: 48,
fontWeight: FontWeight.bold,
shadows: [
const Shadow(
blurRadius: 10.0,
color: Colors.black26,
offset: Offset(2.0, 2.0),
),
],
),
),
),
const SizedBox(height: 12),
// IMPROVEMENT: Using AnimatedTextKit for an engaging tagline
AnimatedTextKit(
animatedTexts: [
TyperAnimatedText(
'Your Journey Begins Here'.tr,
textStyle: AppStyle.title.copyWith(
color: AppColor.writeColor.withOpacity(0.8),
fontSize: 18,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// --- حركة اسم التطبيق ---
// تم إلغاء الشعار واستبداله بحركة نصية ملونة لكلمة "Intaleq"
FadeTransition(
opacity: controller.titleFadeAnimation,
child: ScaleTransition(
scale: controller.titleScaleAnimation,
child: AnimatedTextKit(
animatedTexts: [
ColorizeAnimatedText(
'Intaleq',
textStyle: AppStyle.headTitle.copyWith(
fontSize: 65.0, // تكبير حجم الخط
fontWeight: FontWeight.bold,
shadows: [
const Shadow(
blurRadius: 15.0,
color: Colors.black38,
offset: Offset(0, 3.0),
),
speed: const Duration(milliseconds: 100),
),
],
isRepeatingAnimation: false,
],
),
colors: colorizeColors,
speed: const Duration(milliseconds: 300),
),
],
isRepeatingAnimation: false,
),
),
);
},
),
const SizedBox(height: 18),
// --- حركة الشعار النصي ---
FadeTransition(
opacity: controller.taglineFadeAnimation,
child: SlideTransition(
position: controller.taglineSlideAnimation,
child: Text(
'Your Journey Begins Here'.tr,
style: AppStyle.title.copyWith(
color: AppColor.writeColor.withOpacity(0.9),
fontSize: 18,
),
),
),
),
],
),
),
// Footer section for progress bar and version info.
// قسم سفلي لشريط التقدم ومعلومات الإصدار
Align(
alignment: Alignment.bottomCenter,
child: Padding(
padding:
const EdgeInsets.only(bottom: 40.0, left: 40, right: 40),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
// Using ClipRRect for cleaner rounded corners on the progress bar
ClipRRect(
borderRadius: BorderRadius.circular(10),
child: Obx(() => LinearProgressIndicator(
value: splashScreenController.progress.value,
backgroundColor:
AppColor.writeColor.withOpacity(0.2),
valueColor: const AlwaysStoppedAnimation<Color>(
AppColor.writeColor),
minHeight:
5, // Slightly thicker for better visibility
)),
),
const SizedBox(height: 20),
Text(
'Version: ${box.read(BoxName.packagInfo) ?? '1.0.0'}',
style: AppStyle.subtitle.copyWith(
color: AppColor.writeColor.withOpacity(0.7),
fontWeight: FontWeight.w600,
child: FadeTransition(
opacity: controller.footerFadeAnimation,
child: Padding(
padding: const EdgeInsets.only(
bottom: 40.0, left: 40, right: 40),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
ClipRRect(
borderRadius: BorderRadius.circular(10),
child: Obx(() => LinearProgressIndicator(
value: controller.progress.value,
backgroundColor:
AppColor.writeColor.withOpacity(0.2),
valueColor: const AlwaysStoppedAnimation<Color>(
AppColor.writeColor),
minHeight: 5,
)),
),
),
],
const SizedBox(height: 20),
Text(
'Version: ${box.read(BoxName.packagInfo) ?? '1.0.0'}',
style: AppStyle.subtitle.copyWith(
color: AppColor.writeColor.withOpacity(0.7),
fontWeight: FontWeight.w600,
),
),
],
),
),
),
),
@@ -137,4 +140,28 @@ class SplashScreen extends StatelessWidget {
),
);
}
/// بناء دوائر زخرفية لتحسين الخلفية
Widget _buildDecorativeCircles() {
return Stack(
children: [
Positioned(
top: -80,
left: -100,
child: CircleAvatar(
radius: 120,
backgroundColor: Colors.white.withOpacity(0.05),
),
),
Positioned(
bottom: -120,
right: -150,
child: CircleAvatar(
radius: 180,
backgroundColor: Colors.white.withOpacity(0.07),
),
),
],
);
}
}