Implement multi-teacher video selector, in-app curriculum document reader, 15-question Unit 1 exam bank, and interactive science simulation engine

This commit is contained in:
Hamza-Ayed
2026-09-03 15:16:46 +03:00
parent 7e0aae023a
commit c9c03892d1
7 changed files with 1219 additions and 40 deletions
@@ -15,11 +15,15 @@ import 'package:video_player/video_player.dart';
class SocraticVideoPlayerScreen extends StatefulWidget {
final CurriculumLessonItemModel lesson;
final SubjectModel? subject;
final String? instructorName;
final String? videoSourceLabel;
const SocraticVideoPlayerScreen({
super.key,
required this.lesson,
this.subject,
this.instructorName,
this.videoSourceLabel,
});
@override
@@ -593,6 +597,28 @@ class _SocraticVideoPlayerScreenState extends State<SocraticVideoPlayerScreen> w
),
],
),
if (widget.instructorName != null || widget.videoSourceLabel != null) ...[
const SizedBox(height: 10),
Container(
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 5),
decoration: BoxDecoration(
color: AppColors.saqelCyan.withAlpha(25),
borderRadius: BorderRadius.circular(10),
border: Border.all(color: AppColors.saqelCyan.withAlpha(60)),
),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(CupertinoIcons.person_crop_circle_fill, color: AppColors.saqelCyan, size: 14),
const SizedBox(width: 6),
Text(
widget.instructorName ?? widget.videoSourceLabel ?? 'شرح منصة صَقِل الذكية 🤖',
style: const TextStyle(color: AppColors.saqelCyan, fontSize: 11, fontWeight: FontWeight.w700),
),
],
),
),
],
const SizedBox(height: 14),
if (widget.lesson.outcomes.isNotEmpty)
...widget.lesson.outcomes.map((out) {