From 28e8383662083b3c42991bcb12f886a45b1234e2 Mon Sep 17 00:00:00 2001 From: Naresh Pratista <2141720057@student.polinema.ac.id> Date: Thu, 5 Dec 2024 16:54:20 +0700 Subject: [PATCH] Refactor: refactored code to remove print statements, updated widget constructors, and fixe minor issus in various screens and providers --- lib/core/services/dio_client.dart | 4 +- .../completed_topics_repository.dart | 51 ++++++++----------- .../repositories/level_repository.dart | 1 - .../repositories/section_repository.dart | 1 - .../repositories/topic_repository.dart | 1 - .../repositories/user_repository.dart | 2 - lib/core/widgets/confirm_password_field.dart | 6 +-- lib/core/widgets/email_field.dart | 4 +- lib/core/widgets/fullname_field.dart | 4 +- lib/core/widgets/nisn_field.dart | 4 +- lib/core/widgets/password_field.dart | 4 +- lib/features/auth/provider/user_provider.dart | 50 +++++------------- .../forgot_password_screen.dart | 4 +- .../auth/screens/signin/signin_screen.dart | 11 ++-- .../signin/widgets/login_password_field.dart | 4 +- .../auth/screens/signup/signup_screen.dart | 8 +-- .../history/screens/history_screen.dart | 3 +- .../home/widgets/no_progress_card.dart | 2 +- .../providers/exercise_provider.dart | 18 +------ .../exercises/widgets/exercise_navigator.dart | 2 - .../question/matching_pairs_question.dart | 2 +- .../feedback/screens/feedback_screen.dart | 37 +++++--------- .../material/widgets/video_player_widget.dart | 1 - .../topics/screens/topics_list_screen.dart | 10 ++-- .../learning/provider/section_provider.dart | 2 +- .../learning/screens/learning_screen.dart | 2 +- .../onboarding/screens/onboarding_screen.dart | 2 +- .../screens/change_password_screen.dart | 3 +- .../settings/screens/settings_screen.dart | 11 +--- 29 files changed, 94 insertions(+), 160 deletions(-) diff --git a/lib/core/services/dio_client.dart b/lib/core/services/dio_client.dart index 121e8ea..8be6315 100644 --- a/lib/core/services/dio_client.dart +++ b/lib/core/services/dio_client.dart @@ -8,8 +8,8 @@ class DioClient { DioClient() { _dio.options.baseUrl = baseUrl; - _dio.options.connectTimeout = const Duration(seconds: 5); - _dio.options.receiveTimeout = const Duration(seconds: 10); + _dio.options.connectTimeout = const Duration(seconds: 10); + _dio.options.receiveTimeout = const Duration(seconds: 15); } Future refreshAccessToken(String refreshToken) async { diff --git a/lib/core/services/repositories/completed_topics_repository.dart b/lib/core/services/repositories/completed_topics_repository.dart index a8e0b0e..c9335ad 100644 --- a/lib/core/services/repositories/completed_topics_repository.dart +++ b/lib/core/services/repositories/completed_topics_repository.dart @@ -1,4 +1,3 @@ -import 'package:dio/dio.dart'; import 'package:english_learning/core/services/dio_client.dart'; import 'package:english_learning/features/home/models/completed_topics_model.dart'; @@ -8,38 +7,28 @@ class CompletedTopicsRepository { CompletedTopicsRepository(this._dioClient); Future> getCompletedTopics(String token) async { - try { - final response = await _dioClient.getCompletedTopics(token); + final response = await _dioClient.getCompletedTopics(token); - // Tambahkan pengecekan status code dan payload - if (response.statusCode == 200) { - // Cek apakah payload null atau bukan list - if (response.data['payload'] == null) { - return []; // Kembalikan list kosong jika payload null - } - - // Pastikan payload adalah list - final dynamic payloadData = response.data['payload']; - - if (payloadData is List) { - return payloadData - .map((data) => CompletedTopic.fromJson(data)) - .toList(); - } else { - return []; // Kembalikan list kosong jika payload bukan list - } - } else { - // Tangani status code selain 200 - return []; + // Tambahkan pengecekan status code dan payload + if (response.statusCode == 200) { + // Cek apakah payload null atau bukan list + if (response.data['payload'] == null) { + return []; // Kembalikan list kosong jika payload null } - } on DioException catch (e) { - // Log error jika perlu - print('Network error: ${e.message}'); - return []; // Kembalikan list kosong untuk error jaringan - } catch (e) { - // Log error tidak terduga - print('Unexpected error: $e'); - return []; // Kembalikan list kosong untuk error lainnya + + // Pastikan payload adalah list + final dynamic payloadData = response.data['payload']; + + if (payloadData is List) { + return payloadData + .map((data) => CompletedTopic.fromJson(data)) + .toList(); + } else { + return []; // Kembalikan list kosong jika payload bukan list + } + } else { + // Tangani status code selain 200 + return []; } } } diff --git a/lib/core/services/repositories/level_repository.dart b/lib/core/services/repositories/level_repository.dart index 7b8c338..ebfbd28 100644 --- a/lib/core/services/repositories/level_repository.dart +++ b/lib/core/services/repositories/level_repository.dart @@ -28,7 +28,6 @@ class LevelRepository { throw Exception('Failed to load levels: ${response.statusCode}'); } } catch (e) { - print('Error in LevelRepository: $e'); rethrow; } } diff --git a/lib/core/services/repositories/section_repository.dart b/lib/core/services/repositories/section_repository.dart index 7d1453a..576b44d 100644 --- a/lib/core/services/repositories/section_repository.dart +++ b/lib/core/services/repositories/section_repository.dart @@ -15,7 +15,6 @@ class SectionRepository { throw Exception('Failed to load sections: ${response.statusCode}'); } } catch (e) { - print('Error in SectionRepository: $e'); rethrow; } } diff --git a/lib/core/services/repositories/topic_repository.dart b/lib/core/services/repositories/topic_repository.dart index 8446b79..e9d2d29 100644 --- a/lib/core/services/repositories/topic_repository.dart +++ b/lib/core/services/repositories/topic_repository.dart @@ -15,7 +15,6 @@ class TopicRepository { throw Exception('Failed to load topics: ${response.statusCode}'); } } catch (e) { - print('Error in TopicRepository: $e'); rethrow; } } diff --git a/lib/core/services/repositories/user_repository.dart b/lib/core/services/repositories/user_repository.dart index a7b98cf..53d8bc4 100644 --- a/lib/core/services/repositories/user_repository.dart +++ b/lib/core/services/repositories/user_repository.dart @@ -47,7 +47,6 @@ class UserRepository { } return await dioClient.updateUserProfile(id, formData, token); } catch (e) { - print('Update Profile error: $e'); rethrow; } } @@ -67,7 +66,6 @@ class UserRepository { }; return await dioClient.updatePassword(id, data, token); } catch (e) { - print('Update Password error: $e'); rethrow; } } diff --git a/lib/core/widgets/confirm_password_field.dart b/lib/core/widgets/confirm_password_field.dart index c69d7a6..e77574d 100644 --- a/lib/core/widgets/confirm_password_field.dart +++ b/lib/core/widgets/confirm_password_field.dart @@ -14,11 +14,11 @@ class ConfirmPasswordFieldWidget extends StatefulWidget { }); @override - _ConfirmPasswordFieldWidgetState createState() => - _ConfirmPasswordFieldWidgetState(); + ConfirmPasswordFieldWidgetState createState() => + ConfirmPasswordFieldWidgetState(); } -class _ConfirmPasswordFieldWidgetState +class ConfirmPasswordFieldWidgetState extends State { late FocusNode _focusNode; diff --git a/lib/core/widgets/email_field.dart b/lib/core/widgets/email_field.dart index 997a487..d38956b 100644 --- a/lib/core/widgets/email_field.dart +++ b/lib/core/widgets/email_field.dart @@ -10,10 +10,10 @@ class EmailFieldWidget extends StatefulWidget { {super.key, required this.labelText, required this.hintText}); @override - _EmailFieldWidgetState createState() => _EmailFieldWidgetState(); + EmailFieldWidgetState createState() => EmailFieldWidgetState(); } -class _EmailFieldWidgetState extends State { +class EmailFieldWidgetState extends State { late FocusNode _focusNode; @override diff --git a/lib/core/widgets/fullname_field.dart b/lib/core/widgets/fullname_field.dart index 245d251..1478bb7 100644 --- a/lib/core/widgets/fullname_field.dart +++ b/lib/core/widgets/fullname_field.dart @@ -13,10 +13,10 @@ class FullNameFieldWidget extends StatefulWidget { }); @override - _FullNameFieldWidgetState createState() => _FullNameFieldWidgetState(); + FullNameFieldWidgetState createState() => FullNameFieldWidgetState(); } -class _FullNameFieldWidgetState extends State { +class FullNameFieldWidgetState extends State { late FocusNode _focusNode; @override diff --git a/lib/core/widgets/nisn_field.dart b/lib/core/widgets/nisn_field.dart index aaa4de5..03d2d61 100644 --- a/lib/core/widgets/nisn_field.dart +++ b/lib/core/widgets/nisn_field.dart @@ -13,10 +13,10 @@ class NISNFieldWidget extends StatefulWidget { }); @override - _NISNFieldWidgetState createState() => _NISNFieldWidgetState(); + NISNFieldWidgetState createState() => NISNFieldWidgetState(); } -class _NISNFieldWidgetState extends State { +class NISNFieldWidgetState extends State { late FocusNode _focusNode; @override diff --git a/lib/core/widgets/password_field.dart b/lib/core/widgets/password_field.dart index 2334827..8dbb035 100644 --- a/lib/core/widgets/password_field.dart +++ b/lib/core/widgets/password_field.dart @@ -14,10 +14,10 @@ class PasswordFieldWidget extends StatefulWidget { }); @override - _PasswordFieldWidgetState createState() => _PasswordFieldWidgetState(); + PasswordFieldWidgetState createState() => PasswordFieldWidgetState(); } -class _PasswordFieldWidgetState extends State { +class PasswordFieldWidgetState extends State { late FocusNode _focusNode; @override diff --git a/lib/features/auth/provider/user_provider.dart b/lib/features/auth/provider/user_provider.dart index 253f684..2ad0c10 100644 --- a/lib/features/auth/provider/user_provider.dart +++ b/lib/features/auth/provider/user_provider.dart @@ -29,18 +29,14 @@ class UserProvider with ChangeNotifier { } Future _loadLoginStatus() async { - try { - _jwtToken = await _userRepository.getToken(); - if (_jwtToken != null) { - if (JwtDecoder.isExpired(_jwtToken!)) { - await logout(); - } else { - _isLoggedIn = true; - await _loadUserData(); - } + _jwtToken = await _userRepository.getToken(); + if (_jwtToken != null) { + if (JwtDecoder.isExpired(_jwtToken!)) { + await logout(); + } else { + _isLoggedIn = true; + await _loadUserData(); } - } catch (e) { - print('Error loading login status: $e'); } notifyListeners(); } @@ -53,18 +49,14 @@ class UserProvider with ChangeNotifier { } Future refreshUserData() async { - try { - if (_jwtToken != null) { - final response = await _userRepository.getMe(_jwtToken!); - if (response.statusCode == 200) { - _userData = response.data['payload']; - // Save all user data securely - await _userRepository.saveUserData(_userData!); - notifyListeners(); - } + if (_jwtToken != null) { + final response = await _userRepository.getMe(_jwtToken!); + if (response.statusCode == 200) { + _userData = response.data['payload']; + // Save all user data securely + await _userRepository.saveUserData(_userData!); + notifyListeners(); } - } catch (e) { - print('Error refreshing user data: $e'); } } @@ -96,13 +88,11 @@ class UserProvider with ChangeNotifier { await refreshUserData(); return true; } else if (response.statusCode == 403) { - print('User is not validated: ${response.data['message']}'); return false; } return false; } catch (e) { - print('Login error: $e'); return false; } finally { setLoading(false); @@ -130,7 +120,6 @@ class UserProvider with ChangeNotifier { } return false; } catch (e) { - print('Registration error: $e'); return false; } } @@ -151,7 +140,6 @@ class UserProvider with ChangeNotifier { } return false; } catch (e) { - print('Logout error: $e'); _isLoggedIn = false; _jwtToken = null; _userData = null; @@ -168,15 +156,12 @@ class UserProvider with ChangeNotifier { final response = await _userRepository.forgotPassword(email); if (response.statusCode == 200) { - print("Password reset email sent successfully!"); return true; } else if (response.statusCode == 404) { - print("Email is not registered!"); return false; } return false; } catch (e) { - print('Forgot Password error: $e'); return false; } } @@ -205,7 +190,6 @@ class UserProvider with ChangeNotifier { } return false; } catch (e) { - print('Error refreshing token: $e'); return false; } } @@ -225,7 +209,6 @@ class UserProvider with ChangeNotifier { } return null; } catch (e) { - print('Error in getValidToken: $e'); return null; } } @@ -251,7 +234,6 @@ class UserProvider with ChangeNotifier { } } } catch (e) { - print('Error updating user profile: $e'); rethrow; } } @@ -273,13 +255,11 @@ class UserProvider with ChangeNotifier { token, ); if (response.statusCode == 200) { - print("Password updated successfully!"); return true; } } return false; } catch (e) { - print('Error updating password: $e'); return false; } } @@ -290,13 +270,11 @@ class UserProvider with ChangeNotifier { if (token != null) { final response = await _userRepository.reportIssue(report, token); if (response.statusCode == 201) { - print("Issue reported successfully!"); return true; } } return false; } catch (e) { - print('Error reporting issue: $e'); return false; } } diff --git a/lib/features/auth/screens/forgot_password/forgot_password_screen.dart b/lib/features/auth/screens/forgot_password/forgot_password_screen.dart index db73a08..f0c90e1 100644 --- a/lib/features/auth/screens/forgot_password/forgot_password_screen.dart +++ b/lib/features/auth/screens/forgot_password/forgot_password_screen.dart @@ -43,7 +43,7 @@ class _ForgotPasswordScreenState extends State { Navigator.push( context, MaterialPageRoute( - builder: (context) => SigninScreen(), + builder: (context) => const SigninScreen(), ), ); }, @@ -145,7 +145,7 @@ class _ForgotPasswordScreenState extends State { Navigator.push( context, MaterialPageRoute( - builder: (context) => SigninScreen()), + builder: (context) => const SigninScreen()), ); }, child: Text( diff --git a/lib/features/auth/screens/signin/signin_screen.dart b/lib/features/auth/screens/signin/signin_screen.dart index c1e3d17..e572f78 100644 --- a/lib/features/auth/screens/signin/signin_screen.dart +++ b/lib/features/auth/screens/signin/signin_screen.dart @@ -117,6 +117,9 @@ class _SigninScreenState extends State { @override Widget build(BuildContext context) { + final mediaQuery = MediaQuery.of(context); + final screenHeight = mediaQuery.size.height; + return GestureDetector( onTap: () => FocusScope.of(context).unfocus(), child: Scaffold( @@ -133,7 +136,7 @@ class _SigninScreenState extends State { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - const SizedBox(height: 24), + SizedBox(height: screenHeight * 0.02), Hero( tag: 'welcome_text', child: Material( @@ -155,6 +158,7 @@ class _SigninScreenState extends State { ), ), const SizedBox(height: 26), + // SizedBox(height: screenHeight * 0.05), Center( child: Hero( tag: 'login_illustration', @@ -165,6 +169,7 @@ class _SigninScreenState extends State { ), ), const SizedBox(height: 30), + // SizedBox(height: screenHeight * 0.05), CustomFieldWidget( fieldName: 'login', controller: _loginController, @@ -314,7 +319,7 @@ class _SigninScreenState extends State { PageRouteBuilder( pageBuilder: (context, animation, secondaryAnimation) => - SignupScreen(), + const SignupScreen(), transitionsBuilder: (context, animation, secondaryAnimation, child) { return FadeTransition( @@ -341,7 +346,7 @@ class _SigninScreenState extends State { ), ], ), - const SizedBox(height: 16), + SizedBox(height: screenHeight * 0.02), ], ); }, diff --git a/lib/features/auth/screens/signin/widgets/login_password_field.dart b/lib/features/auth/screens/signin/widgets/login_password_field.dart index fca09ee..fe57de2 100644 --- a/lib/features/auth/screens/signin/widgets/login_password_field.dart +++ b/lib/features/auth/screens/signin/widgets/login_password_field.dart @@ -8,10 +8,10 @@ class LoginPasswordField extends StatefulWidget { const LoginPasswordField({super.key}); @override - _LoginPasswordFieldState createState() => _LoginPasswordFieldState(); + LoginPasswordFieldState createState() => LoginPasswordFieldState(); } -class _LoginPasswordFieldState extends State { +class LoginPasswordFieldState extends State { late FocusNode _focusNode; @override diff --git a/lib/features/auth/screens/signup/signup_screen.dart b/lib/features/auth/screens/signup/signup_screen.dart index b279efa..b50cbd3 100644 --- a/lib/features/auth/screens/signup/signup_screen.dart +++ b/lib/features/auth/screens/signup/signup_screen.dart @@ -12,7 +12,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class SignupScreen extends StatefulWidget { - SignupScreen({super.key}); + const SignupScreen({super.key}); @override State createState() => _SignupScreenState(); @@ -88,7 +88,7 @@ class _SignupScreenState extends State { // Navigate to login screen Navigator.of(dialogContext).pushAndRemoveUntil( MaterialPageRoute( - builder: (context) => SigninScreen(), + builder: (context) => const SigninScreen(), ), (Route route) => false, ); @@ -288,7 +288,7 @@ class _SignupScreenState extends State { } }, ), - const SizedBox(height: 8), + const SizedBox(height: 16), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -303,7 +303,7 @@ class _SignupScreenState extends State { Navigator.push( context, MaterialPageRoute( - builder: (context) => SigninScreen()), + builder: (context) => const SigninScreen()), ); }, child: Text( diff --git a/lib/features/history/screens/history_screen.dart b/lib/features/history/screens/history_screen.dart index 230d6d5..dbc79e2 100644 --- a/lib/features/history/screens/history_screen.dart +++ b/lib/features/history/screens/history_screen.dart @@ -37,7 +37,7 @@ class _HistoryScreenState extends State { try { await historyProvider.fetchLearningHistory(userProvider.jwtToken!); } catch (e) { - print('Error initializing history: $e'); + rethrow; } finally { setState(() { _isInitialLoading = false; @@ -109,7 +109,6 @@ class _HistoryScreenState extends State { child: Padding( padding: const EdgeInsets.symmetric( horizontal: 16.0, - vertical: 30.0, ), child: Column( children: [ diff --git a/lib/features/home/widgets/no_progress_card.dart b/lib/features/home/widgets/no_progress_card.dart index 04e936b..f8a83a1 100644 --- a/lib/features/home/widgets/no_progress_card.dart +++ b/lib/features/home/widgets/no_progress_card.dart @@ -8,7 +8,7 @@ class NoProgressCard extends StatelessWidget { Widget build(BuildContext context) { return Container( width: double.infinity, - decoration: BoxDecoration( + decoration: const BoxDecoration( color: AppColors.whiteColor, ), ); diff --git a/lib/features/learning/modules/exercises/providers/exercise_provider.dart b/lib/features/learning/modules/exercises/providers/exercise_provider.dart index 6b1ce5f..df893c0 100644 --- a/lib/features/learning/modules/exercises/providers/exercise_provider.dart +++ b/lib/features/learning/modules/exercises/providers/exercise_provider.dart @@ -181,7 +181,6 @@ class ExerciseProvider extends ChangeNotifier { void _selectRightOption(int exerciseIndex, String option) { if (_activeLeftOption == null) { - print("Please select a left option first."); return; } @@ -250,30 +249,23 @@ class ExerciseProvider extends ChangeNotifier { void goToExercise(int index) { if (index >= 0 && index < _exercises.length) { _currentExerciseIndex = index; - print('Going to exercise: $_currentExerciseIndex'); // Debug print notifyListeners(); } } void nextQuestion() { - print('Current index before next: $_currentExerciseIndex'); // Debug print if (_currentExerciseIndex < (_exercises.isNotEmpty ? _exercises.length - 1 : _reviewExercises.length - 1)) { _currentExerciseIndex++; - print('Moving to next question: $_currentExerciseIndex'); // Debug print notifyListeners(); } } void previousQuestion() { - print( - 'Current index before previous: $_currentExerciseIndex'); // Debug print if (_currentExerciseIndex > 0) { _currentExerciseIndex--; - print( - 'Moving to previous question: $_currentExerciseIndex'); // Debug print notifyListeners(); } } @@ -334,7 +326,7 @@ class ExerciseProvider extends ChangeNotifier { _answers = List.generate(_exercises.length, (index) => ''); initializeAnswers(); } catch (e) { - print('Error fetching exercises: $e'); + rethrow; } finally { _isLoading = false; notifyListeners(); @@ -383,7 +375,6 @@ class ExerciseProvider extends ChangeNotifier { } } } catch (e) { - print('Error fetching review exercises: $e'); rethrow; } finally { _isLoading = false; @@ -480,12 +471,9 @@ class ExerciseProvider extends ChangeNotifier { 'No answers to submit. Please answer at least one question.'); } - print('Submitting answers to repository'); final result = await _repository.submitAnswersAndGetScore( answersToSubmit, _studentLearningId!, token); - print('Repository response: $result'); - return { 'CURRENT_LEVEL_NAME': result['CURRENT_LEVEL_NAME'], 'NEXT_LEARNING_NAME': result['NEXT_LEARNING_NAME'], @@ -493,7 +481,6 @@ class ExerciseProvider extends ChangeNotifier { 'IS_PASS': result['IS_PASS'], }; } catch (e) { - print('Error in submitAnswersAndGetScore: $e'); rethrow; } } @@ -507,13 +494,10 @@ class ExerciseProvider extends ChangeNotifier { if (_studentLearningId == null) { throw Exception('Student Learning ID is not set'); } - print('Submitting feedback for stdLearningId: $_studentLearningId'); final result = await _repository.submitFeedback( _studentLearningId!, feedback, token); - print('Feedback submitted successfully'); return result; } catch (e) { - print('Error submitting feedback: $e'); rethrow; } } diff --git a/lib/features/learning/modules/exercises/widgets/exercise_navigator.dart b/lib/features/learning/modules/exercises/widgets/exercise_navigator.dart index a21f678..0846c96 100644 --- a/lib/features/learning/modules/exercises/widgets/exercise_navigator.dart +++ b/lib/features/learning/modules/exercises/widgets/exercise_navigator.dart @@ -37,7 +37,6 @@ class ExerciseNavigator extends StatelessWidget { Future submitAnswers() async { try { final result = await exerciseProvider.submitAnswersAndGetScore(); - print('Submit result: $result'); if (context.mounted) { Navigator.of(context).pushReplacement( @@ -55,7 +54,6 @@ class ExerciseNavigator extends StatelessWidget { ); } } catch (e) { - print('Error submitting answers: $e'); if (context.mounted) { CustomSnackBar.show( context, 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 369dd29..1117857 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 @@ -363,7 +363,7 @@ class _MatchingPairsQuestionState extends State { ], ), ); - }).toList(), + }), ], ); } diff --git a/lib/features/learning/modules/feedback/screens/feedback_screen.dart b/lib/features/learning/modules/feedback/screens/feedback_screen.dart index 5d4c78c..ed17c5e 100644 --- a/lib/features/learning/modules/feedback/screens/feedback_screen.dart +++ b/lib/features/learning/modules/feedback/screens/feedback_screen.dart @@ -80,10 +80,7 @@ class _FeedbackScreenState extends State { }); try { - final exerciseProvider = - Provider.of(context, listen: false); - final result = - await exerciseProvider.submitFeedback(_controller.text.trim()); + Provider.of(context, listen: false); if (!mounted) return; @@ -91,27 +88,19 @@ class _FeedbackScreenState extends State { _isLoading = false; }); - if (result != null) { - await showDialog( - context: context, - barrierDismissible: false, - builder: (BuildContext dialogContext) => PopScope( - canPop: false, - child: FeedbackDialog( - onSubmit: () { - Navigator.pop(dialogContext); - _navigateToLevelList(); - }, - ), + await showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext dialogContext) => PopScope( + canPop: false, + child: FeedbackDialog( + onSubmit: () { + Navigator.pop(dialogContext); + _navigateToLevelList(); + }, ), - ); - } else { - CustomSnackBar.show( - context, - message: 'Failed to submit feedback. Please try again.', - isError: true, - ); - } + ), + ); } catch (e) { if (!mounted) return; diff --git a/lib/features/learning/modules/material/widgets/video_player_widget.dart b/lib/features/learning/modules/material/widgets/video_player_widget.dart index 40c5f4b..4976f58 100644 --- a/lib/features/learning/modules/material/widgets/video_player_widget.dart +++ b/lib/features/learning/modules/material/widgets/video_player_widget.dart @@ -77,7 +77,6 @@ class VideoPlayerWidgetState extends State { } return null; } catch (e) { - print('Error extracting YouTube ID: $e'); return null; } } diff --git a/lib/features/learning/modules/topics/screens/topics_list_screen.dart b/lib/features/learning/modules/topics/screens/topics_list_screen.dart index 7d06689..2c52b97 100644 --- a/lib/features/learning/modules/topics/screens/topics_list_screen.dart +++ b/lib/features/learning/modules/topics/screens/topics_list_screen.dart @@ -1,4 +1,5 @@ import 'package:english_learning/core/services/constants.dart'; +import 'package:english_learning/core/widgets/custom_snackbar.dart'; import 'package:english_learning/core/widgets/loading/shimmer_loading_widget.dart'; import 'package:english_learning/features/auth/provider/user_provider.dart'; import 'package:english_learning/features/learning/modules/level/screens/level_list_screen.dart'; @@ -46,12 +47,15 @@ class _TopicsListScreenState extends State { try { await Provider.of(context, listen: false) .fetchTopics(widget.sectionId, token); - print('Topics fetched successfully'); } catch (e) { - print('Error fetching topics: $e'); + rethrow; } } else { - print('No valid token found. User might need to log in.'); + CustomSnackBar.show( + context, + message: 'No valid token found. User might need to log in.', + isError: true, + ); } } diff --git a/lib/features/learning/provider/section_provider.dart b/lib/features/learning/provider/section_provider.dart index 895d3f8..7d2b7d6 100644 --- a/lib/features/learning/provider/section_provider.dart +++ b/lib/features/learning/provider/section_provider.dart @@ -5,7 +5,7 @@ import 'package:flutter/foundation.dart'; class SectionProvider extends ChangeNotifier { final SectionRepository _repository = SectionRepository(); List
_sections = []; - bool _isLoading = false; + final bool _isLoading = false; dynamic _error; List
get sections => _sections; diff --git a/lib/features/learning/screens/learning_screen.dart b/lib/features/learning/screens/learning_screen.dart index b3abd58..3c36467 100644 --- a/lib/features/learning/screens/learning_screen.dart +++ b/lib/features/learning/screens/learning_screen.dart @@ -40,7 +40,7 @@ class _LearningScreenState extends State await sectionProvider.fetchSections(token); } } catch (e) { - print('Error initializing sections: $e'); + rethrow; } finally { setState(() { _isInitialLoading = false; diff --git a/lib/features/onboarding/screens/onboarding_screen.dart b/lib/features/onboarding/screens/onboarding_screen.dart index d69faa5..3610fc8 100644 --- a/lib/features/onboarding/screens/onboarding_screen.dart +++ b/lib/features/onboarding/screens/onboarding_screen.dart @@ -117,7 +117,7 @@ class _OnBoardingScreenState extends State { Navigator.push( context, MaterialPageRoute( - builder: (context) => SignupScreen()), + builder: (context) => const SignupScreen()), ); }, ), diff --git a/lib/features/settings/modules/change_password/screens/change_password_screen.dart b/lib/features/settings/modules/change_password/screens/change_password_screen.dart index 396eab2..a74a96a 100644 --- a/lib/features/settings/modules/change_password/screens/change_password_screen.dart +++ b/lib/features/settings/modules/change_password/screens/change_password_screen.dart @@ -114,7 +114,8 @@ class _ChangePasswordScreenState extends State { Navigator.pushAndRemoveUntil( context, MaterialPageRoute( - builder: (context) => SigninScreen()), + builder: (context) => + const SigninScreen()), (route) => false, ); }, diff --git a/lib/features/settings/screens/settings_screen.dart b/lib/features/settings/screens/settings_screen.dart index 0015414..5fd337a 100644 --- a/lib/features/settings/screens/settings_screen.dart +++ b/lib/features/settings/screens/settings_screen.dart @@ -23,14 +23,6 @@ class SettingsScreen extends StatefulWidget { } class _SettingsScreenState extends State { - // @override - // void initState() { - // super.initState(); - // WidgetsBinding.instance.addPostFrameCallback((_) { - // Provider.of(context, listen: false).refreshUserData(); - // }); - // } - @override Widget build(BuildContext context) { return Scaffold( @@ -186,7 +178,8 @@ class _SettingsScreenState extends State { if (success) { Navigator.of(context).pushAndRemoveUntil( MaterialPageRoute( - builder: (context) => SigninScreen()), + builder: (context) => + const SigninScreen()), (Route route) => false, ); } else {