Update Saqel Platform: 2026-09-05 23:24:49
This commit is contained in:
@@ -2,21 +2,23 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'core/theme/teacher_theme.dart';
|
||||
import 'data/repositories/teacher_repository.dart';
|
||||
import 'logic/cubits/teacher_auth_cubit.dart';
|
||||
import 'logic/cubits/teacher_studio_cubit.dart';
|
||||
import 'logic/cubits/teacher_monetization_cubit.dart';
|
||||
import 'logic/cubits/teacher_qna_cubit.dart';
|
||||
import 'presentation/screens/auth/teacher_auth_screen.dart';
|
||||
import 'presentation/screens/teacher_main_shell.dart';
|
||||
|
||||
/**
|
||||
* ==============================================================================
|
||||
* SAQEL ENTERPRISE (EDTECH 2.0) - TEACHER STUDIO APP
|
||||
* SAQEL ENTERPRISE (EDTECH 2.0) - TEACHER STUDIO APP (ZERO-MOCK PRODUCTION)
|
||||
* ==============================================================================
|
||||
*
|
||||
* نقطة انطلاق تطبيق استوديو المعلم المعتمد — بنية معمارية رشيقة ومنظمة بنمط Cubit:
|
||||
* - فحص جودة الحصص وبوابة التركيز الإدراكي (MIT 20-25 Min Quality Gate)
|
||||
* - نموذج التسعير المزدوج وتقاسم العوائد الثلاثي (55% / 15% / 30%)
|
||||
* - سحب المستحقات الفوري عبر كليك (CliQ Payout Direct Rail)
|
||||
* - الواجبات المؤتمتة وغرفة الشكوك والردود الصوتية السقراطية 🎙️.
|
||||
* نقطة انطلاق تطبيق استوديو المعلم المعتمد:
|
||||
* - بوابة مصادقة حقيقية عبر الواتساب (WhatsApp OTP via Nabeh Gateway)
|
||||
* - استعلام وتحديد الصفوف والمواد التي يدرسها المعلم
|
||||
* - غرفة المحادثات الحية والردود الصوتية السقراطية (Socratic Voice Notes)
|
||||
* - بث مقاطع صوتية توجيهية لكافة طلبة الشعبة عبر الويب سوكت (0ms Broadcast).
|
||||
*/
|
||||
void main() {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -35,6 +37,9 @@ class SaqelTeacherApp extends StatelessWidget {
|
||||
Widget build(BuildContext context) {
|
||||
return MultiBlocProvider(
|
||||
providers: [
|
||||
BlocProvider<TeacherAuthCubit>(
|
||||
create: (_) => TeacherAuthCubit(repository: repository)..checkSession(),
|
||||
),
|
||||
BlocProvider<TeacherStudioCubit>(
|
||||
create: (_) => TeacherStudioCubit(repository: repository),
|
||||
),
|
||||
@@ -49,8 +54,32 @@ class SaqelTeacherApp extends StatelessWidget {
|
||||
title: 'صَقِل — استوديو المعلم المعتمد',
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: TeacherTheme.darkTheme,
|
||||
home: const TeacherMainShell(),
|
||||
home: const TeacherAuthGate(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Global Auth Gate: Auto-Directs to TeacherMainShell if Logged In, or TeacherAuthScreen
|
||||
class TeacherAuthGate extends StatelessWidget {
|
||||
const TeacherAuthGate({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BlocBuilder<TeacherAuthCubit, TeacherAuthState>(
|
||||
builder: (context, state) {
|
||||
if (state is TeacherAuthenticated) {
|
||||
return TeacherMainShell(initialProfile: state.profile);
|
||||
} else if (state is TeacherAuthLoading || state is TeacherAuthInitial) {
|
||||
return const Scaffold(
|
||||
backgroundColor: TeacherTheme.backgroundDark,
|
||||
body: Center(
|
||||
child: CircularProgressIndicator(color: TeacherTheme.emeraldPrimary),
|
||||
),
|
||||
);
|
||||
}
|
||||
return const TeacherAuthScreen();
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user