Files
saqel/apps/teacher_app/lib/presentation/screens/teacher_main_shell.dart
T

159 lines
6.0 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import '../../core/theme/teacher_theme.dart';
import 'tabs/teacher_studio_upload_tab.dart';
import 'tabs/teacher_monetization_tab.dart';
import 'tabs/teacher_reputation_scorecard_tab.dart';
import 'tabs/teacher_assignments_qna_tab.dart';
/**
* ==============================================================================
* SAQEL TEACHER STUDIO - MAIN SHELL
* ==============================================================================
*
* الهيكل التنفيذي الرئيسي لاستوديو المعلم المعتمد:
* - شريط علوي يحمل هوية المعلم، المدرسة، ودرجة الاعتماد الأكاديمي (94%)
* - تنقل سفلي مرن بين استوديو الرفع، محفظة التسييل، رادار الأداء، وغرفة الأسئلة.
*/
class TeacherMainShell extends StatefulWidget {
const TeacherMainShell({super.key});
@override
State<TeacherMainShell> createState() => _TeacherMainShellState();
}
class _TeacherMainShellState extends State<TeacherMainShell> {
int _currentTabIndex = 0;
@override
Widget build(BuildContext context) {
return Directionality(
textDirection: TextDirection.rtl,
child: Scaffold(
backgroundColor: TeacherTheme.backgroundDark,
appBar: AppBar(
backgroundColor: TeacherTheme.surfaceDark,
elevation: 0,
title: Row(
children: [
Container(
width: 36,
height: 36,
decoration: BoxDecoration(
gradient: const LinearGradient(
colors: [TeacherTheme.emeraldPrimary, TeacherTheme.emeraldDark],
),
borderRadius: BorderRadius.circular(10),
),
child: const Center(
child: Text(
'م',
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w900,
color: Colors.black,
),
),
),
),
const SizedBox(width: 10),
const Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Text(
'استوديو المعلم المعتمد',
style: TextStyle(
fontSize: 15,
fontWeight: FontWeight.w800,
color: Colors.white,
),
),
SizedBox(width: 6),
Icon(CupertinoIcons.checkmark_seal_fill, color: TeacherTheme.emeraldPrimary, size: 16),
],
),
Text(
'أ. أحمد المجالي · فيزياء التوجيهي (الثقافة العسكرية)',
style: TextStyle(fontSize: 11, color: Color(0xFF94A3B8)),
),
],
),
],
),
actions: [
Container(
margin: const EdgeInsets.symmetric(vertical: 12, horizontal: 12),
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 4),
decoration: BoxDecoration(
color: TeacherTheme.emeraldPrimary.withOpacity(0.15),
borderRadius: BorderRadius.circular(8),
border: Border.all(color: TeacherTheme.emeraldPrimary.withOpacity(0.4)),
),
child: const Row(
children: [
Icon(CupertinoIcons.star_fill, color: TeacherTheme.royalGold, size: 14),
SizedBox(width: 4),
Text(
'معتمد 94%',
style: TextStyle(
fontSize: 11.5,
fontWeight: FontWeight.w800,
color: TeacherTheme.emeraldLight,
),
),
],
),
),
],
),
body: IndexedStack(
index: _currentTabIndex,
children: const [
TeacherStudioUploadTab(),
TeacherMonetizationTab(),
TeacherReputationScorecardTab(),
TeacherAssignmentsQnATab(),
],
),
bottomNavigationBar: Container(
decoration: const BoxDecoration(
color: TeacherTheme.surfaceDark,
border: Border(top: BorderSide(color: TeacherTheme.surfaceBorder)),
),
child: BottomNavigationBar(
currentIndex: _currentTabIndex,
onTap: (idx) => setState(() => _currentTabIndex = idx),
backgroundColor: Colors.transparent,
selectedItemColor: TeacherTheme.emeraldPrimary,
unselectedItemColor: const Color(0xFF64748B),
selectedLabelStyle: const TextStyle(fontWeight: FontWeight.w800, fontSize: 11),
unselectedLabelStyle: const TextStyle(fontSize: 10.5),
type: BottomNavigationBarType.fixed,
elevation: 0,
items: const [
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.videocam_circle_fill),
label: 'استوديو الحصص',
),
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.money_dollar_circle_fill),
label: 'محفظة التسييل',
),
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.chart_bar_circle_fill),
label: 'رادار الأداء',
),
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.chat_bubble_2_fill),
label: 'الواجبات والأسئلة',
),
],
),
),
),
);
}
}