diff --git a/lib/features/learning/modules/exercises/providers/exercise_provider.dart b/lib/features/learning/modules/exercises/providers/exercise_provider.dart index 8e0f9c2..7819b75 100644 --- a/lib/features/learning/modules/exercises/providers/exercise_provider.dart +++ b/lib/features/learning/modules/exercises/providers/exercise_provider.dart @@ -253,10 +253,16 @@ class ExerciseProvider extends ChangeNotifier { return _answers[index].isNotEmpty; } + void _resetReviewState() { + _reviewData = null; + _reviewExercises = []; + } + // API methods Future fetchExercises(String levelId) async { _isLoading = true; _currentExerciseIndex = 0; + _resetReviewState(); notifyListeners(); try { @@ -460,17 +466,31 @@ class ExerciseProvider extends ChangeNotifier { void updateFrom(ExerciseProvider? previous) { if (previous != null) { - _exercises = previous._exercises; - _matchingAnswers = previous._matchingAnswers; - _answers = previous._answers; - _leftColors = previous._leftColors; - _rightColors = previous._rightColors; - _currentExerciseIndex = previous._currentExerciseIndex; - _isLoading = previous._isLoading; - _nameTopic = previous._nameTopic; - _nameLevel = previous._nameLevel; - _studentLearningId = previous._studentLearningId; - _reviewData = previous._reviewData; + // Only copy non-review related state + if (!previous._reviewExercises.isNotEmpty) { + // If we're not coming from a review state + _exercises = previous._exercises; + _matchingAnswers = previous._matchingAnswers; + _answers = previous._answers; + _leftColors = previous._leftColors; + _rightColors = previous._rightColors; + _currentExerciseIndex = previous._currentExerciseIndex; + _nameTopic = previous._nameTopic; + _nameLevel = previous._nameLevel; + _studentLearningId = previous._studentLearningId; + } else { + // If we are coming from a review state, reset everything + _exercises = []; + _matchingAnswers = {}; + _answers = []; + _leftColors = []; + _rightColors = []; + _currentExerciseIndex = 0; + _nameTopic = ''; + _nameLevel = ''; + _studentLearningId = previous._studentLearningId; + } + _isLoading = false; } } } diff --git a/lib/features/learning/modules/level/widgets/level_card.dart b/lib/features/learning/modules/level/widgets/level_card.dart index 8c9ebf0..45d09e2 100644 --- a/lib/features/learning/modules/level/widgets/level_card.dart +++ b/lib/features/learning/modules/level/widgets/level_card.dart @@ -42,7 +42,7 @@ class LevelCard extends StatelessWidget { ), child: Stack( children: [ - if (isCompleted) + if (isAllowed && score > 0) Positioned( right: -23, bottom: 4, @@ -122,18 +122,14 @@ class LevelCard extends StatelessWidget { child: Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: CustomButton( - text: isCompleted - ? 'Finished' - : (isAllowed ? 'Learn Now' : 'Locked'), + text: isAllowed ? 'Learn Now' : 'Locked', textStyle: isAllowed ? null : AppTextStyles.disableTextStyle, width: double.infinity, height: 36, - color: isCompleted - ? Colors.green - : (isAllowed - ? AppColors.yellowButtonColor - : AppColors.cardButtonColor), + color: isAllowed + ? AppColors.yellowButtonColor + : AppColors.cardButtonColor, onPressed: isAllowed ? () { Navigator.push( diff --git a/lib/features/learning/modules/result/widgets/down_result_widget.dart b/lib/features/learning/modules/result/widgets/down_result_widget.dart index f22f287..b6d1bff 100644 --- a/lib/features/learning/modules/result/widgets/down_result_widget.dart +++ b/lib/features/learning/modules/result/widgets/down_result_widget.dart @@ -58,7 +58,7 @@ class DownResultWidget extends StatelessWidget { ), const SizedBox(height: 8), Text( - 'Level $nextLevel', + '$nextLevel', style: AppTextStyles.redTextStyle .copyWith(fontSize: 20, fontWeight: FontWeight.w900), ),