From db1a76cd805afa26c9e829217f1abbea26658b55 Mon Sep 17 00:00:00 2001 From: Resh <2141720057@student.polinema.ac.id> Date: Wed, 16 Apr 2025 11:00:33 +0700 Subject: [PATCH] fix: update base URLs in constants and clean up unused code in various files --- lib/core/services/constants.dart | 4 +- lib/features/home/widgets/progress_card.dart | 7 -- .../question/matching_pairs_question.dart | 98 +------------------ .../exercises/widgets/see_progress_modal.dart | 11 +-- .../modules/result/screens/result_screen.dart | 1 - 5 files changed, 11 insertions(+), 110 deletions(-) diff --git a/lib/core/services/constants.dart b/lib/core/services/constants.dart index 6ac04c1..22237c4 100644 --- a/lib/core/services/constants.dart +++ b/lib/core/services/constants.dart @@ -1,3 +1,3 @@ -const String baseUrl = 'https://api.seals.id/'; +const String baseUrl = 'http://labai.polinema.ac.id:3001/'; -const String mediaUrl = 'https://api.seals.id/api/uploads/'; +const String mediaUrl = 'http://labai.polinema.ac.id:3001/api/uploads/'; diff --git a/lib/features/home/widgets/progress_card.dart b/lib/features/home/widgets/progress_card.dart index 6a2e616..6e7e5cb 100644 --- a/lib/features/home/widgets/progress_card.dart +++ b/lib/features/home/widgets/progress_card.dart @@ -21,11 +21,9 @@ class ProgressCard extends StatelessWidget { Future _navigateToTopics( BuildContext context, CompletedTopic topic) async { - // Get the SectionProvider final sectionProvider = Provider.of(context, listen: false); - // Show loading indicator while checking/loading data showDialog( context: context, barrierDismissible: false, @@ -35,7 +33,6 @@ class ProgressCard extends StatelessWidget { ); try { - // If sections aren't loaded yet, load them if (sectionProvider.sections.isEmpty) { final userProvider = Provider.of(context, listen: false); final token = await userProvider.getValidToken(); @@ -47,10 +44,8 @@ class ProgressCard extends StatelessWidget { } } - // Remove loading indicator Navigator.pop(context); - // Navigate to topics screen Navigator.push( context, MaterialPageRoute( @@ -60,10 +55,8 @@ class ProgressCard extends StatelessWidget { ), ); } catch (e) { - // Remove loading indicator Navigator.pop(context); - // Show error dialog showDialog( context: context, builder: (context) => AlertDialog( diff --git a/lib/features/learning/modules/exercises/widgets/question/matching_pairs_question.dart b/lib/features/learning/modules/exercises/widgets/question/matching_pairs_question.dart index 1117857..bb41fc1 100644 --- a/lib/features/learning/modules/exercises/widgets/question/matching_pairs_question.dart +++ b/lib/features/learning/modules/exercises/widgets/question/matching_pairs_question.dart @@ -34,81 +34,6 @@ class _MatchingPairsQuestionState extends State { initializePairs(); } - // void initializePairs() { - // pairs = []; - // studentAnswers = {}; - // originalPairMapping = {}; - // originalPairIndices = {}; - - // if (widget.exercise is ExerciseModel) { - // // Mode Exercise - // pairs = (widget.exercise.choices as MatchingPair).pairs; - // final provider = Provider.of(context, listen: false); - // final currentIndex = provider.currentExerciseIndex; - - // // Simpan indeks asli untuk setiap pasangan kiri - // for (int i = 0; i < pairs.length; i++) { - // originalPairIndices[pairs[i].left] = i; - // } - - // originalRightPairs = pairs.map((pair) => pair.right as String).toList(); - // shuffledRightPairs = - // List.from(provider.shuffledRightPairsList[currentIndex]); - // } else if (widget.exercise is ReviewExerciseDetail) { - // // Mode Review - // if (widget.exercise.matchingPairs != null) { - // if (widget.exercise.answerStudent.isNotEmpty) { - // final answerPairs = widget.exercise.answerStudent.split(', '); - - // // Buat pairs berdasarkan urutan jawaban siswa - // pairs = answerPairs.map((pair) { - // final parts = pair.split('-'); - // return Pair(left: parts[0], right: parts[1]); - // }).toList(); - - // // Simpan indeks asli dan mapping untuk setiap pasangan - // for (int i = 0; i < pairs.length; i++) { - // final left = pairs[i].left; - // final right = pairs[i].right; - // originalPairIndices[left] = i; - // studentAnswers[left] = right; - // originalPairMapping[left] = right; - // } - - // // Set originalRightPairs dan shuffledRightPairs sama dengan urutan jawaban siswa - // originalRightPairs = - // pairs.map((pair) => pair.right as String).toList(); - // shuffledRightPairs = - // originalRightPairs.toList(); // Tidak diacak untuk review - // } else { - // // Jika tidak ada jawaban, gunakan data asli - // pairs = widget.exercise.matchingPairs!.map((reviewPair) { - // return Pair( - // left: reviewPair.leftPair, - // right: reviewPair.rightPair, - // ); - // }).toList(); - - // // Simpan indeks asli untuk setiap pasangan - // for (int i = 0; i < pairs.length; i++) { - // originalPairIndices[pairs[i].left] = i; - // } - - // originalRightPairs = - // pairs.map((pair) => pair.right as String).toList(); - // shuffledRightPairs = originalRightPairs.toList(); - // } - // } - // } - - // // Bangun pemetaan konsisten - // for (int i = 0; i < pairs.length; i++) { - // final left = pairs[i].left; - // final right = pairs[i].right; - // originalPairMapping[left] = right; - // } - // } - void initializePairs() { pairs = []; studentAnswers = {}; @@ -116,12 +41,10 @@ class _MatchingPairsQuestionState extends State { originalPairIndices = {}; if (widget.exercise is ExerciseModel) { - // Mode Exercise pairs = (widget.exercise.choices as MatchingPair).pairs; final provider = Provider.of(context, listen: false); final currentIndex = provider.currentExerciseIndex; - // Simpan indeks asli untuk setiap pasangan kiri for (int i = 0; i < pairs.length; i++) { originalPairIndices[pairs[i].left] = i; } @@ -130,9 +53,7 @@ class _MatchingPairsQuestionState extends State { shuffledRightPairs = List.from(provider.shuffledRightPairsList[currentIndex]); } else if (widget.exercise is ReviewExerciseDetail) { - // Mode Review if (widget.exercise.matchingPairs != null) { - // Gunakan data asli dari exercise untuk mempertahankan urutan pairs = widget.exercise.matchingPairs!.map((reviewPair) { return Pair( left: reviewPair.leftPair, @@ -140,17 +61,13 @@ class _MatchingPairsQuestionState extends State { ); }).toList(); - // Simpan indeks asli untuk setiap pasangan for (int i = 0; i < pairs.length; i++) { originalPairIndices[pairs[i].left] = i; } - // Use the original right pairs without shuffling originalRightPairs = pairs.map((pair) => pair.right as String).toList(); - shuffledRightPairs = - originalRightPairs.toList(); // No shuffling for review + shuffledRightPairs = originalRightPairs.toList(); - // Rekonstruksi jawaban siswa if (widget.exercise.answerStudent.isNotEmpty) { final answerPairs = widget.exercise.answerStudent.split('|'); for (var pair in answerPairs) { @@ -163,7 +80,6 @@ class _MatchingPairsQuestionState extends State { } } - // Bangun pemetaan konsisten for (int i = 0; i < pairs.length; i++) { final left = pairs[i].left; final right = pairs[i].right; @@ -194,7 +110,6 @@ class _MatchingPairsQuestionState extends State { bool isActive = false; Color? color; - // Mencari indeks asli pasangan untuk warna yang konsisten int originalPairIndex = -1; if (isLeft) { @@ -202,9 +117,7 @@ class _MatchingPairsQuestionState extends State { pair is Pair ? pair.left == option : pair.leftPair == option); isActive = provider.activeLeftOption == option; } else { - // Untuk right pair, cari berdasarkan pasangan yang sudah terbentuk if (widget.isReview) { - // Untuk mode review, periksa apakah opsi ini ada di jawaban siswa final matchedLeft = studentAnswers.keys.firstWhere( (key) => studentAnswers[key] == option, orElse: () => '', @@ -229,20 +142,17 @@ class _MatchingPairsQuestionState extends State { } } - // Menentukan warna berdasarkan status if (widget.isReview) { if (isLeft) { - // Untuk left pair di mode review final matchedRight = studentAnswers[option]; if (matchedRight != null) { isSelected = true; - // Cari indeks pasangan untuk warna yang konsisten + originalPairIndex = pairs.indexWhere( (pair) => (pair is Pair ? pair.left : pair.leftPair) == option); color = _getPairColor(originalPairIndex); } } else { - // Untuk right pair di mode review final matchedLeft = studentAnswers.keys.firstWhere( (key) => studentAnswers[key] == option, orElse: () => '', @@ -250,7 +160,7 @@ class _MatchingPairsQuestionState extends State { if (matchedLeft.isNotEmpty) { isSelected = true; - // Cari indeks pasangan untuk warna yang konsisten + originalPairIndex = pairs.indexWhere((pair) => (pair is Pair ? pair.left : pair.leftPair) == matchedLeft); color = _getPairColor(originalPairIndex); @@ -331,7 +241,7 @@ class _MatchingPairsQuestionState extends State { final int pairIndex = entry.key; final dynamic pair = entry.value; final String left = pair is Pair ? pair.left : pair.leftPair; - // Menggunakan shuffledRightPairs untuk right pair + final String right = shuffledRightPairs[pairIndex]; return Padding( diff --git a/lib/features/learning/modules/exercises/widgets/see_progress_modal.dart b/lib/features/learning/modules/exercises/widgets/see_progress_modal.dart index 36a3550..0143904 100644 --- a/lib/features/learning/modules/exercises/widgets/see_progress_modal.dart +++ b/lib/features/learning/modules/exercises/widgets/see_progress_modal.dart @@ -45,9 +45,9 @@ class SeeProgressModal extends StatelessWidget { ), const SizedBox(height: 20), GridView.builder( - shrinkWrap: true, // Important to wrap GridView inside a modal + shrinkWrap: true, gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 5, // Number of columns + crossAxisCount: 5, mainAxisSpacing: 10, crossAxisSpacing: 10, childAspectRatio: 1, @@ -57,9 +57,8 @@ class SeeProgressModal extends StatelessWidget { final isCompleted = exerciseProvider.isExerciseCompleted(index); return ElevatedButton( onPressed: () { - Navigator.pop(context); // Close modal - exerciseProvider - .goToExercise(index); // Navigate to the selected exercise + Navigator.pop(context); + exerciseProvider.goToExercise(index); }, style: ElevatedButton.styleFrom( backgroundColor: @@ -71,7 +70,7 @@ class SeeProgressModal extends StatelessWidget { width: 1, ), ), - elevation: 0, // Remove shadow + elevation: 0, padding: const EdgeInsets.all(0), minimumSize: const Size(50, 50), ), diff --git a/lib/features/learning/modules/result/screens/result_screen.dart b/lib/features/learning/modules/result/screens/result_screen.dart index 60aaad0..245c8cf 100644 --- a/lib/features/learning/modules/result/screens/result_screen.dart +++ b/lib/features/learning/modules/result/screens/result_screen.dart @@ -48,7 +48,6 @@ class ResultScreen extends StatelessWidget { ); } - // Menggunakan compareTo untuk membandingkan level final currentLevelNum = _extractLevelNumber(currentLevel); final nextLevelNum = _extractLevelNumber(nextLevel);