flutter(rider): rebuild lib on Cubit/Bloc + Tripz backend (core + auth slice)
- keep store identity (com.mobileapp.store.ride, shorebird, firebase, fonts); old lib -> lib_old_getx - core: config/di/router(go_router)/theme/api_client(dio+tenant+bearer)/token_store(secure) - auth: repo + AuthCubit + OTP phone/otp screens; home: flutter_map (OSM placeholder, انطلق TODO) - android usesCleartextTraffic=true for http API; maps=flutter_map (no Google), state=Cubit Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,167 +0,0 @@
|
||||
import 'package:animated_text_kit/animated_text_kit.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:Tripz/constant/colors.dart';
|
||||
import 'package:Tripz/constant/style.dart';
|
||||
import 'package:Tripz/constant/box_name.dart';
|
||||
import 'package:Tripz/main.dart';
|
||||
|
||||
import 'controller/home/splash_screen_controlle.dart';
|
||||
|
||||
// شاشة بداية بتصميم جديد وحركات وألوان محسّنة
|
||||
class SplashScreen extends StatelessWidget {
|
||||
const SplashScreen({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// تهيئة الكنترولر
|
||||
final SplashScreenController controller = Get.put(SplashScreenController());
|
||||
|
||||
// تعريف الألوان المستخدمة في حركة اسم التطبيق
|
||||
const colorizeColors = [
|
||||
Colors.white,
|
||||
Color(0xFF89D4CF), // لون تركواز فاتح
|
||||
Color(0xFF734AE8), // لون بنفسجي مشرق
|
||||
Colors.white,
|
||||
];
|
||||
|
||||
return SafeArea(
|
||||
child: Scaffold(
|
||||
body: Container(
|
||||
// --- تحسين الألوان ---
|
||||
// تم استخدام تدرج لوني جديد أكثر حيوية وعصرية
|
||||
decoration: const BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
Color(0xFF2E3192), // أزرق داكن
|
||||
Color(0xFF1BFFFF), // سماوي ساطع
|
||||
],
|
||||
),
|
||||
),
|
||||
child: Stack(
|
||||
children: [
|
||||
// دوائر زخرفية لإضافة عمق للتصميم
|
||||
_buildDecorativeCircles(),
|
||||
|
||||
// المحتوى الرئيسي مع الحركات المتتالية
|
||||
Center(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
// --- حركة اسم التطبيق ---
|
||||
// تم إلغاء الشعار واستبداله بحركة نصية ملونة لكلمة "Tripz"
|
||||
FadeTransition(
|
||||
opacity: controller.titleFadeAnimation,
|
||||
child: ScaleTransition(
|
||||
scale: controller.titleScaleAnimation,
|
||||
child: AnimatedTextKit(
|
||||
animatedTexts: [
|
||||
ColorizeAnimatedText(
|
||||
'Tripz',
|
||||
textStyle: AppStyle.headTitle.copyWith(
|
||||
fontSize: 65.0, // تكبير حجم الخط
|
||||
fontWeight: FontWeight.bold,
|
||||
shadows: [
|
||||
const Shadow(
|
||||
blurRadius: 15.0,
|
||||
color: Colors.black38,
|
||||
offset: Offset(0, 3.0),
|
||||
),
|
||||
],
|
||||
),
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
// قسم سفلي لشريط التقدم ومعلومات الإصدار
|
||||
Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
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,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/// بناء دوائر زخرفية لتحسين الخلفية
|
||||
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),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user