From cab78c8f4ddb56d496275304f689897516aa0edd Mon Sep 17 00:00:00 2001 From: amirrezaghabeli Date: Mon, 1 Sep 2025 17:50:51 +0330 Subject: [PATCH] added string for every screen and removed from app strings --- lib/core/constants/common_strings.dart | 13 ++ lib/core/constants/strings.dart | 116 ------------------ .../routes/app_shell/mobile_shell_page.dart | 11 +- .../detail/pages/detail_desktop_page.dart | 22 +++- .../detail/pages/detail_mobile_page.dart | 27 ++-- .../detail/pages/detail_tablet_page.dart | 22 +++- .../strings/tender_details_strings.dart | 34 +++++ lib/views/detail/widgets/deadline_item.dart | 10 +- .../detail/widgets/tender_detail_action.dart | 16 +-- .../detail/widgets/tender_detail_card.dart | 8 +- .../widgets/tender_detail_info_section.dart | 15 ++- .../widgets/tender_location_section.dart | 4 +- .../pages/d_forgot_apssword_page.dart | 12 +- .../pages/m_forgot_password_page.dart | 12 +- .../pages/t_forgot_password_page.dart | 12 +- .../strings/forgot_password_strings.dart | 11 ++ lib/views/home/pages/d_home_page.dart | 18 +-- lib/views/home/pages/m_home_page.dart | 20 +-- lib/views/home/pages/t_home_page.dart | 16 +-- lib/views/home/strings/home_strings.dart | 19 +++ lib/views/home/tenders_list_item.dart | 4 +- lib/views/home/widgets/notification_card.dart | 5 +- .../widgets/tender_card_progress_bar.dart | 4 +- lib/views/login/pages/login_desktop_page.dart | 8 +- lib/views/login/pages/login_mobile_page.dart | 8 +- lib/views/login/pages/login_tablet_page.dart | 8 +- lib/views/login/strings/login_strings.dart | 8 ++ lib/views/login/widgets/login_title.dart | 6 +- lib/views/profile/pages/d_profile_page.dart | 21 ++-- lib/views/profile/pages/m_profile_page.dart | 23 ++-- lib/views/profile/pages/t_profile_page.dart | 21 ++-- .../profile/strings/profile_strings.dart | 14 +++ lib/views/shared/base_button.dart | 4 +- .../shared/desktop_navigation_widget.dart | 10 +- .../shared/tablet_navigation_widget.dart | 10 +- lib/views/tenders/pages/d_tenders_page.dart | 4 +- lib/views/tenders/pages/m_tenders_page.dart | 7 +- lib/views/tenders/pages/t_tenders_page.dart | 4 +- .../tenders/strings/tenders_strings.dart | 11 ++ .../widgets/tender_action_buttons_row.dart | 18 +-- lib/views/tenders/widgets/tender_card.dart | 9 +- .../pages/your_tenders_desktop_page.dart | 7 +- .../pages/your_tenders_mobile_page.dart | 4 +- .../strings/your_tenders_strings.dart | 16 +++ .../widgets/tablet_desktop_appbar.dart | 4 +- 45 files changed, 358 insertions(+), 298 deletions(-) create mode 100644 lib/core/constants/common_strings.dart delete mode 100644 lib/core/constants/strings.dart create mode 100644 lib/views/detail/strings/tender_details_strings.dart create mode 100644 lib/views/forgot_password/strings/forgot_password_strings.dart create mode 100644 lib/views/home/strings/home_strings.dart create mode 100644 lib/views/login/strings/login_strings.dart create mode 100644 lib/views/profile/strings/profile_strings.dart create mode 100644 lib/views/tenders/strings/tenders_strings.dart create mode 100644 lib/views/your_tenders/strings/your_tenders_strings.dart diff --git a/lib/core/constants/common_strings.dart b/lib/core/constants/common_strings.dart new file mode 100644 index 0000000..6a264d8 --- /dev/null +++ b/lib/core/constants/common_strings.dart @@ -0,0 +1,13 @@ +class CommonStrings { + CommonStrings._(); + + // Truly shared strings across multiple features + static const String noData = 'No data'; + static const String confirm = 'Confirm'; + static const String submit = 'Submit'; + static const String cancel = 'Cancel'; + static const String loading = 'Loading...'; + static const String error = 'Error'; + static const String success = 'Success'; + static const String retry = 'Retry'; +} diff --git a/lib/core/constants/strings.dart b/lib/core/constants/strings.dart deleted file mode 100644 index 9c14e7b..0000000 --- a/lib/core/constants/strings.dart +++ /dev/null @@ -1,116 +0,0 @@ -class AppStrings { - AppStrings._(); - - static const String noData = 'No data'; - - // App Titles - static const String appName = 'My Awesome App'; - static const String loginTitle = 'Welcome Back'; - - // Labels and Buttons - static const String signupButton = 'Create Account'; - static const String forgotPassword = 'Forgot Password?'; - static const String emailHint = 'Email address'; - static const String passwordHint = 'Password'; - - // Error Messages - static const String loginFailed = - 'Login failed. Please check your credentials.'; - static const String networkError = 'Network error. Please try again.'; - - //Login - static const signInTitle = 'Sign In'; - static const signInSubtitle = 'Enter valid username & password to continue'; - static const usernameLabel = 'User Name'; - static const passwordLabel = 'Password'; - static const loginButton = 'Login'; - - //forgot password - static const String forgotPasswordTitle = 'Forgot Password'; - static const String forgotPasswordSubtitle = - 'Enter your registered email and company ID and submit your request.'; - static const String emailAddressHint = 'Email Address'; - static const String backToSignInButton = 'Back to Sign In'; - static const String resetLink = 'Reset Link'; - - //Home - static const String home = 'Home'; - static const String partnership = 'Partnership'; - static const String selfApply = 'Self-apply'; - static const String contracting = 'Contracting'; - static const String tenderSubmitted = 'Tenders submitted'; - static const String approvedTenders = 'Approved tenders'; - static const String tenderValue = 'Tender Value'; - static const String thunderStatus = 'Thunder status'; - static const String likedTenders = 'Liked Tenders'; - static const String yourTenders = 'Your tenders'; - static const String recommendation = 'Recommendation'; - static const String welcome = 'Welcome'; - static const String tenderDeadline = 'Deadline'; - static const String recommendedTenders = 'Recommended Tenders'; - - //Tenders - static const String tendersTitle = 'Tenders'; - static const String tenderSeeMore = 'See More'; - static const String reject = 'Reject'; - static const String submit = 'Submit'; - static const String dislike = 'Dislike'; - static const String like = 'Like'; - - //profile - static const String profile = 'Profile'; - static const String settings = 'Settings'; - static const String appTheme = 'App Theme'; - static const String companyName = 'Company Name'; - static const String nationalId = 'National ID'; - static const String registrationNumber = 'Registration No.'; - static const String businessType = 'Business Type'; - static const String founded = 'Founded'; - static const String logout = 'Logout'; - - //your tenders - static const String yourTendersTitle = 'Your tenders'; - static const filter = 'Filter'; - static const selectDateRange = 'Select date range'; - static const status = 'Status'; - static const all = 'All'; - static const likeTenders = 'Like tenders'; - static const dislikeTenders = 'Dislike tenders'; - static const tendersSubmitted = 'Tenders submitted'; - static const confirm = 'Confirm'; - static const startDate = 'YYYY/MM/DD'; - static const endDate = 'YYYY/MM/DD'; - - - // Tender Detail Page - static const String tenderDetailTitle = 'Tender Detail'; - static const String tenderStatusOpen = 'Open'; - static const String tenderIdLabel = 'ID'; - static const String tenderDeadlineLabel = 'Deadline'; - static const String tenderApprovalText = 'For approval'; - static const String tenderSubmissionText = 'For submission'; - static const String tenderClientLabel = 'Client'; - static const String tenderDeliveryLocationsLabel = 'Delivery Locations'; - static const String tenderReferenceNumberLabel = 'Reference Number'; - static const String tenderLocationLabel = 'Locations'; - static const String tenderPdfDocument = 'PDF , Document'; - static const String tenderMatchProfile = 'Match with your profile'; - static const String tenderIncompleteResume = 'Incomplete Resume Information'; - static const String tenderNoExperience = - 'No experience in e-platform development'; - static const String tenderSubmitButton = 'Submit'; - static const String tenderRejectButton = 'Reject'; - static const String tenderClientExample = - 'Procurement Notice Procurement Notice'; - static const String estimatedValue = 'Estimated Value '; - static const String duration = 'Duration'; - static const String tenderSubmittedSuccessfully = - 'tender submitted successfully!'; - static const String tenderRejectedSuccessfully = - 'tender rejected successfully!'; - static const String tenderUnrejectedSuccessfully = - 'tender unrejected successfully!'; - static const String tenderUnsubmittedSuccessfully = - 'tender unsubmitted successfully!'; - static const String tenderNoData = 'No tender details available'; -} diff --git a/lib/core/routes/app_shell/mobile_shell_page.dart b/lib/core/routes/app_shell/mobile_shell_page.dart index 40f6539..a1c9cf5 100644 --- a/lib/core/routes/app_shell/mobile_shell_page.dart +++ b/lib/core/routes/app_shell/mobile_shell_page.dart @@ -2,9 +2,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:go_router/go_router.dart'; import 'package:tm_app/core/constants/assets.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; +import 'package:tm_app/views/profile/strings/profile_strings.dart'; + +import '../../../views/home/strings/home_strings.dart'; +import '../../../views/tenders/strings/tenders_strings.dart'; class MobileShellPage extends StatelessWidget { const MobileShellPage({ @@ -31,7 +34,7 @@ class MobileShellPage extends StatelessWidget { children: [ _bottomNavigationItem( context: context, - text: AppStrings.home, + text: HomeStrings.home, isActive: navigationShell.currentIndex == 0, onTap: () => onTap(0), iconPath: AssetsManager.home, @@ -39,7 +42,7 @@ class MobileShellPage extends StatelessWidget { ), _bottomNavigationItem( context: context, - text: AppStrings.tendersTitle, + text: TendersStrings.tendersTitle, isActive: navigationShell.currentIndex == 1, onTap: () => onTap(1), iconPath: AssetsManager.tenders, @@ -47,7 +50,7 @@ class MobileShellPage extends StatelessWidget { ), _bottomNavigationItem( context: context, - text: AppStrings.profile, + text: ProfileStrings.profileTitle, isActive: navigationShell.currentIndex == 2, onTap: () => onTap(2), iconPath: AssetsManager.profile, diff --git a/lib/views/detail/pages/detail_desktop_page.dart b/lib/views/detail/pages/detail_desktop_page.dart index 7cde0ce..18eabc0 100644 --- a/lib/views/detail/pages/detail_desktop_page.dart +++ b/lib/views/detail/pages/detail_desktop_page.dart @@ -7,9 +7,9 @@ import 'package:tm_app/views/detail/widgets/tender_detail_action.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_card.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_header.dart'; -import '../../../core/constants/strings.dart'; import '../../../core/routes/app_routes.dart'; import '../../shared/desktop_navigation_widget.dart'; +import '../strings/tender_details_strings.dart'; class TenderDetailDesktopPage extends StatefulWidget { final String tenderId; @@ -34,28 +34,36 @@ class _TenderDetailDesktopPageState extends State { viewModel.status == 'submitted' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(AppStrings.tenderSubmittedSuccessfully)), + SnackBar( + content: Text(TenderDetailsStrings.tenderSubmittedSuccessfully), + ), ); } if (viewModel.status.isNotEmpty && viewModel.status == 'unsubmitted' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(AppStrings.tenderUnsubmittedSuccessfully)), + SnackBar( + content: Text(TenderDetailsStrings.tenderUnsubmittedSuccessfully), + ), ); } if (viewModel.status.isNotEmpty && viewModel.status == 'rejected' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(AppStrings.tenderRejectedSuccessfully)), + SnackBar( + content: Text(TenderDetailsStrings.tenderRejectedSuccessfully), + ), ); } if (viewModel.status.isNotEmpty && viewModel.status == 'unrejected' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(AppStrings.tenderUnrejectedSuccessfully)), + SnackBar( + content: Text(TenderDetailsStrings.tenderUnrejectedSuccessfully), + ), ); } if (viewModel.approvalStatus != false && viewModel.errorMessage != null) { @@ -98,7 +106,9 @@ class _TenderDetailDesktopPageState extends State { final detail = tenderViewModel.tenderDetail; if (detail == null) { - return const Center(child: Text(AppStrings.tenderNoData)); + return const Center( + child: Text(TenderDetailsStrings.tenderNoData), + ); } return Column( diff --git a/lib/views/detail/pages/detail_mobile_page.dart b/lib/views/detail/pages/detail_mobile_page.dart index db9c59f..567771f 100644 --- a/lib/views/detail/pages/detail_mobile_page.dart +++ b/lib/views/detail/pages/detail_mobile_page.dart @@ -1,10 +1,10 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; import 'package:tm_app/view_models/tender_detail_view_model.dart'; +import 'package:tm_app/views/detail/strings/tender_details_strings.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_action.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_card.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_header.dart'; @@ -32,28 +32,36 @@ class _TenderDetailMobilePageState extends State { viewModel.status == 'submitted' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(AppStrings.tenderSubmittedSuccessfully)), + SnackBar( + content: Text(TenderDetailsStrings.tenderSubmittedSuccessfully), + ), ); } if (viewModel.status.isNotEmpty && viewModel.status == 'unsubmitted' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(AppStrings.tenderUnsubmittedSuccessfully)), + SnackBar( + content: Text(TenderDetailsStrings.tenderUnsubmittedSuccessfully), + ), ); } if (viewModel.status.isNotEmpty && viewModel.status == 'rejected' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(AppStrings.tenderRejectedSuccessfully)), + SnackBar( + content: Text(TenderDetailsStrings.tenderRejectedSuccessfully), + ), ); } if (viewModel.status.isNotEmpty && viewModel.status == 'unrejected' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(AppStrings.tenderUnrejectedSuccessfully)), + SnackBar( + content: Text(TenderDetailsStrings.tenderUnrejectedSuccessfully), + ), ); } if (viewModel.approvalStatus != false && viewModel.errorMessage != null) { @@ -86,7 +94,10 @@ class _TenderDetailMobilePageState extends State { }, child: Scaffold( backgroundColor: AppColors.backgroundColor, - appBar: appBar(context: context, title: AppStrings.tenderDetailTitle), + appBar: appBar( + context: context, + title: TenderDetailsStrings.tenderDetailTitle, + ), body: Consumer( builder: (context, tenderViewModel, child) { if (tenderViewModel.isLoading) { @@ -101,7 +112,9 @@ class _TenderDetailMobilePageState extends State { final detail = tenderViewModel.tenderDetail; if (detail == null) { - return const Center(child: Text(AppStrings.tenderNoData)); + return const Center( + child: Text(TenderDetailsStrings.tenderNoData), + ); } return SingleChildScrollView( diff --git a/lib/views/detail/pages/detail_tablet_page.dart b/lib/views/detail/pages/detail_tablet_page.dart index aac0f6f..2bb9683 100644 --- a/lib/views/detail/pages/detail_tablet_page.dart +++ b/lib/views/detail/pages/detail_tablet_page.dart @@ -12,8 +12,8 @@ import 'package:tm_app/views/detail/widgets/tender_detail_card.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_header.dart'; import 'package:tm_app/views/shared/tablet_navigation_widget.dart'; -import '../../../core/constants/strings.dart'; import '../../../core/routes/app_routes.dart'; +import '../strings/tender_details_strings.dart'; class TenderDetailTabletPage extends StatefulWidget { final String tenderId; @@ -37,28 +37,36 @@ class _TenderDetailTabletPageState extends State { viewModel.status == 'submitted' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(AppStrings.tenderSubmittedSuccessfully)), + SnackBar( + content: Text(TenderDetailsStrings.tenderSubmittedSuccessfully), + ), ); } if (viewModel.status.isNotEmpty && viewModel.status == 'unsubmitted' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(AppStrings.tenderUnsubmittedSuccessfully)), + SnackBar( + content: Text(TenderDetailsStrings.tenderUnsubmittedSuccessfully), + ), ); } if (viewModel.status.isNotEmpty && viewModel.status == 'rejected' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(AppStrings.tenderRejectedSuccessfully)), + SnackBar( + content: Text(TenderDetailsStrings.tenderRejectedSuccessfully), + ), ); } if (viewModel.status.isNotEmpty && viewModel.status == 'unrejected' && viewModel.approvalStatus == true) { ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(AppStrings.tenderUnrejectedSuccessfully)), + SnackBar( + content: Text(TenderDetailsStrings.tenderUnrejectedSuccessfully), + ), ); } if (viewModel.approvalStatus != false && viewModel.errorMessage != null) { @@ -149,7 +157,9 @@ class _TenderDetailTabletPageState extends State { final detail = tenderViewModel.tenderDetail; if (detail == null) { - return const Center(child: Text(AppStrings.tenderNoData)); + return const Center( + child: Text(TenderDetailsStrings.tenderNoData), + ); } return SingleChildScrollView( child: Center( diff --git a/lib/views/detail/strings/tender_details_strings.dart b/lib/views/detail/strings/tender_details_strings.dart new file mode 100644 index 0000000..5713b88 --- /dev/null +++ b/lib/views/detail/strings/tender_details_strings.dart @@ -0,0 +1,34 @@ +class TenderDetailsStrings { + TenderDetailsStrings._(); + + static const String tenderDetailTitle = 'Tender Detail'; + static const String tenderStatusOpen = 'Open'; + static const String tenderIdLabel = 'ID'; + static const String tenderDeadlineLabel = 'Deadline'; + static const String tenderApprovalText = 'For approval'; + static const String tenderSubmissionText = 'For submission'; + static const String tenderClientLabel = 'Client'; + static const String tenderDeliveryLocationsLabel = 'Delivery Locations'; + static const String tenderReferenceNumberLabel = 'Reference Number'; + static const String tenderLocationLabel = 'Locations'; + static const String tenderPdfDocument = 'PDF , Document'; + static const String tenderMatchProfile = 'Match with your profile'; + static const String tenderIncompleteResume = 'Incomplete Resume Information'; + static const String tenderNoExperience = + 'No experience in e-platform development'; + static const String tenderSubmitButton = 'Submit'; + static const String tenderRejectButton = 'Reject'; + static const String tenderClientExample = + 'Procurement Notice Procurement Notice'; + static const String estimatedValue = 'Estimated Value '; + static const String duration = 'Duration'; + static const String tenderSubmittedSuccessfully = + 'tender submitted successfully!'; + static const String tenderRejectedSuccessfully = + 'tender rejected successfully!'; + static const String tenderUnrejectedSuccessfully = + 'tender unrejected successfully!'; + static const String tenderUnsubmittedSuccessfully = + 'tender unsubmitted successfully!'; + static const String tenderNoData = 'No tender details available'; +} diff --git a/lib/views/detail/widgets/deadline_item.dart b/lib/views/detail/widgets/deadline_item.dart index e894948..6f30a67 100644 --- a/lib/views/detail/widgets/deadline_item.dart +++ b/lib/views/detail/widgets/deadline_item.dart @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/date_utils.dart'; import 'package:tm_app/core/utils/size_config.dart'; +import 'package:tm_app/views/detail/strings/tender_details_strings.dart'; -import '../../../core/constants/strings.dart'; import '../../../data/services/model/tender_data/tender_data.dart'; class DeadlineItem extends StatelessWidget { @@ -44,7 +44,7 @@ class DeadlineItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - AppStrings.tenderApprovalText, + TenderDetailsStrings.tenderApprovalText, style: TextStyle( color: AppColors.grey70, fontWeight: FontWeight.w400, @@ -73,7 +73,7 @@ class DeadlineItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - AppStrings.tenderSubmissionText, + TenderDetailsStrings.tenderSubmissionText, style: TextStyle( color: AppColors.grey70, fontWeight: FontWeight.w400, @@ -120,7 +120,7 @@ class DeadlineItem extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - AppStrings.tenderApprovalText, + TenderDetailsStrings.tenderApprovalText, style: TextStyle( color: AppColors.grey70, fontWeight: FontWeight.w400, @@ -142,7 +142,7 @@ class DeadlineItem extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - AppStrings.tenderSubmissionText, + TenderDetailsStrings.tenderSubmissionText, style: TextStyle( color: AppColors.grey70, fontWeight: FontWeight.w400, diff --git a/lib/views/detail/widgets/tender_detail_action.dart b/lib/views/detail/widgets/tender_detail_action.dart index a7745dc..12f1e17 100644 --- a/lib/views/detail/widgets/tender_detail_action.dart +++ b/lib/views/detail/widgets/tender_detail_action.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; import 'package:tm_app/view_models/tender_detail_view_model.dart'; @@ -9,6 +8,7 @@ import 'package:tm_app/views/shared/select_submission_bottom_sheet.dart'; import '../../../data/services/model/tender_data/tender_data.dart'; import '../../shared/select_submission_dialog.dart'; +import '../strings/tender_details_strings.dart'; class TenderDetailActions extends StatelessWidget { final bool isScreenBig; @@ -43,7 +43,7 @@ class TenderDetailActions extends StatelessWidget { ) : BaseButton( isEnabled: true, - text: AppStrings.tenderSubmitButton, + text: TenderDetailsStrings.tenderSubmitButton, backgroundColor: AppColors.primary30, textColor: AppColors.mainBlue, onPressed: () { @@ -78,7 +78,7 @@ class TenderDetailActions extends StatelessWidget { return viewModel.isRejectApprovalLoading ? BaseButton( isEnabled: true, - text: AppStrings.tenderRejectButton, + text: TenderDetailsStrings.tenderRejectButton, borderColor: AppColors.error, textColor: AppColors.error, backgroundColor: AppColors.backgroundColor, @@ -87,7 +87,7 @@ class TenderDetailActions extends StatelessWidget { ) : BaseButton( isEnabled: true, - text: AppStrings.tenderRejectButton, + text: TenderDetailsStrings.tenderRejectButton, borderColor: AppColors.error, textColor: AppColors.error, backgroundColor: AppColors.backgroundColor, @@ -115,7 +115,7 @@ class TenderDetailActions extends StatelessWidget { return viewModel.isRejectApprovalLoading ? BaseButton( isEnabled: true, - text: AppStrings.tenderRejectButton, + text: TenderDetailsStrings.tenderRejectButton, textColor: AppColors.red10, backgroundColor: AppColors.backgroundColor, borderWidth: 1, @@ -124,7 +124,7 @@ class TenderDetailActions extends StatelessWidget { ) : BaseButton( isEnabled: true, - text: AppStrings.tenderRejectButton, + text: TenderDetailsStrings.tenderRejectButton, textColor: AppColors.red10, backgroundColor: AppColors.backgroundColor, borderWidth: 1, @@ -144,7 +144,7 @@ class TenderDetailActions extends StatelessWidget { return viewModel.isSubmitApprovalLoading ? BaseButton( isEnabled: true, - text: AppStrings.tenderSubmitButton, + text: TenderDetailsStrings.tenderSubmitButton, backgroundColor: AppColors.lightBlue, textColor: AppColors.mainBlue, onPressed: () {}, @@ -152,7 +152,7 @@ class TenderDetailActions extends StatelessWidget { ) : BaseButton( isEnabled: true, - text: AppStrings.tenderSubmitButton, + text: TenderDetailsStrings.tenderSubmitButton, backgroundColor: AppColors.lightBlue, textColor: AppColors.mainBlue, onPressed: () { diff --git a/lib/views/detail/widgets/tender_detail_card.dart b/lib/views/detail/widgets/tender_detail_card.dart index e357d40..0e5f118 100644 --- a/lib/views/detail/widgets/tender_detail_card.dart +++ b/lib/views/detail/widgets/tender_detail_card.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; import 'package:tm_app/data/services/model/tender_data/tender_data.dart'; +import 'package:tm_app/views/detail/strings/tender_details_strings.dart'; class TenderDetailCard extends StatelessWidget { final TenderData detail; @@ -25,7 +25,7 @@ class TenderDetailCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - AppStrings.tenderMatchProfile, + TenderDetailsStrings.tenderMatchProfile, style: TextStyle( fontSize: 12.0.sp(), color: AppColors.grey80, @@ -65,7 +65,7 @@ class TenderDetailCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - AppStrings.tenderIncompleteResume, + TenderDetailsStrings.tenderIncompleteResume, style: TextStyle( fontWeight: FontWeight.w600, fontSize: 16.0.sp(), @@ -74,7 +74,7 @@ class TenderDetailCard extends StatelessWidget { ), SizedBox(height: 4.0.h()), Text( - AppStrings.tenderNoExperience, + TenderDetailsStrings.tenderNoExperience, style: TextStyle( fontSize: 14.0.sp(), color: AppColors.grey70, diff --git a/lib/views/detail/widgets/tender_detail_info_section.dart b/lib/views/detail/widgets/tender_detail_info_section.dart index 0486e93..983c9b6 100644 --- a/lib/views/detail/widgets/tender_detail_info_section.dart +++ b/lib/views/detail/widgets/tender_detail_info_section.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/data/services/model/tender_data/tender_data.dart'; +import 'package:tm_app/views/detail/strings/tender_details_strings.dart'; import 'package:tm_app/views/detail/widgets/deadline_item.dart'; import 'package:tm_app/views/detail/widgets/info_item.dart'; @@ -19,22 +19,25 @@ class TenderDetailInfoSection extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - InfoItem(title: AppStrings.tenderIdLabel, value: detail.tenderId ?? ''), + InfoItem( + title: TenderDetailsStrings.tenderIdLabel, + value: detail.tenderId ?? '', + ), DeadlineItem(detail: detail, isScreenBig: isScreenBig), InfoItem( - title: AppStrings.tenderClientLabel, + title: TenderDetailsStrings.tenderClientLabel, value: detail.buyerOrganization!.name ?? '', ), InfoItem( - title: AppStrings.estimatedValue, + title: TenderDetailsStrings.estimatedValue, value: '${detail.estimatedValue} ${detail.currency ?? ''}', ), InfoItem( - title: AppStrings.duration, + title: TenderDetailsStrings.duration, value: '${detail.duration} ${detail.durationUnit ?? ''}', ), InfoItem( - title: AppStrings.tenderReferenceNumberLabel, + title: TenderDetailsStrings.tenderReferenceNumberLabel, value: detail.noticePublicationId ?? '', ), ], diff --git a/lib/views/detail/widgets/tender_location_section.dart b/lib/views/detail/widgets/tender_location_section.dart index 73b7049..16dd056 100644 --- a/lib/views/detail/widgets/tender_location_section.dart +++ b/lib/views/detail/widgets/tender_location_section.dart @@ -2,11 +2,11 @@ import 'package:country_flags/country_flags.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:tm_app/core/constants/assets.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; import '../../../data/services/model/tender_data/tender_data.dart'; +import '../strings/tender_details_strings.dart'; class TenderLocationSection extends StatelessWidget { final TenderData detail; @@ -60,7 +60,7 @@ class TenderLocationSection extends StatelessWidget { ), SizedBox(height: 8.0.h()), Text( - AppStrings.tenderLocationLabel, + TenderDetailsStrings.tenderLocationLabel, style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16.0.sp()), ), SizedBox(height: 8.0.h()), diff --git a/lib/views/forgot_password/pages/d_forgot_apssword_page.dart b/lib/views/forgot_password/pages/d_forgot_apssword_page.dart index e76cdc5..b70cfdf 100644 --- a/lib/views/forgot_password/pages/d_forgot_apssword_page.dart +++ b/lib/views/forgot_password/pages/d_forgot_apssword_page.dart @@ -5,11 +5,11 @@ import 'package:provider/provider.dart'; import 'package:tm_app/core/utils/size_config.dart'; import '../../../core/constants/assets.dart'; -import '../../../core/constants/strings.dart'; import '../../../core/theme/colors.dart'; import '../../../view_models/auth_view_model.dart'; import '../../login/widgets/login_textfield.dart'; import '../../shared/base_button.dart'; +import '../strings/forgot_password_strings.dart'; class DesktopForgotPasswordPage extends StatelessWidget { const DesktopForgotPasswordPage({super.key}); @@ -41,7 +41,7 @@ class DesktopForgotPasswordPage extends StatelessWidget { ), SizedBox(height: 72.0.h()), Text( - AppStrings.forgotPasswordTitle, + ForgotPasswordStrings.forgotPasswordTitle, style: TextStyle( fontSize: 28.0.sp(), fontWeight: FontWeight.bold, @@ -50,7 +50,7 @@ class DesktopForgotPasswordPage extends StatelessWidget { ), SizedBox(height: 16.0.h()), Text( - AppStrings.forgotPasswordSubtitle, + ForgotPasswordStrings.forgotPasswordSubtitle, textAlign: TextAlign.center, style: TextStyle( fontSize: 14.0.sp(), @@ -62,13 +62,13 @@ class DesktopForgotPasswordPage extends StatelessWidget { LoginTextField( controller: viewModel.emailController, focusNode: viewModel.emailFocus, - label: AppStrings.emailAddressHint, + label: ForgotPasswordStrings.emailAddressHint, isPassword: false, ), SizedBox(height: 70.0.h()), BaseButton( isEnabled: false, - text: AppStrings.resetLink, + text: ForgotPasswordStrings.resetLink, onPressed: () async { if (viewModel.isLoginEnabled) { await viewModel.login(); @@ -81,7 +81,7 @@ class DesktopForgotPasswordPage extends StatelessWidget { context.pop(); }, child: Text( - AppStrings.backToSignInButton, + ForgotPasswordStrings.backToSignInButton, style: TextStyle( fontSize: 14.0.sp(), fontWeight: FontWeight.w500, diff --git a/lib/views/forgot_password/pages/m_forgot_password_page.dart b/lib/views/forgot_password/pages/m_forgot_password_page.dart index 101d239..d65c263 100644 --- a/lib/views/forgot_password/pages/m_forgot_password_page.dart +++ b/lib/views/forgot_password/pages/m_forgot_password_page.dart @@ -5,11 +5,11 @@ import 'package:provider/provider.dart'; import 'package:tm_app/core/utils/size_config.dart'; import '../../../core/constants/assets.dart'; -import '../../../core/constants/strings.dart'; import '../../../core/theme/colors.dart'; import '../../../view_models/auth_view_model.dart'; import '../../login/widgets/login_textfield.dart'; import '../../shared/base_button.dart'; +import '../strings/forgot_password_strings.dart'; class MobileForgotPasswordPage extends StatelessWidget { const MobileForgotPasswordPage({super.key}); @@ -36,7 +36,7 @@ class MobileForgotPasswordPage extends StatelessWidget { ), SizedBox(height: 72.0.h()), Text( - AppStrings.forgotPasswordTitle, + ForgotPasswordStrings.forgotPasswordTitle, style: TextStyle( fontSize: 28.0.sp(), fontWeight: FontWeight.bold, @@ -45,7 +45,7 @@ class MobileForgotPasswordPage extends StatelessWidget { ), SizedBox(height: 16.0.h()), Text( - AppStrings.forgotPasswordSubtitle, + ForgotPasswordStrings.forgotPasswordSubtitle, textAlign: TextAlign.center, style: TextStyle( fontSize: 14.0.sp(), @@ -57,13 +57,13 @@ class MobileForgotPasswordPage extends StatelessWidget { LoginTextField( controller: viewModel.emailController, focusNode: viewModel.emailFocus, - label: AppStrings.emailAddressHint, + label: ForgotPasswordStrings.emailAddressHint, isPassword: false, ), SizedBox(height: 70.0.h()), BaseButton( isEnabled: false, - text: AppStrings.resetLink, + text: ForgotPasswordStrings.resetLink, onPressed: () async { if (viewModel.isLoginEnabled) { await viewModel.login(); @@ -75,7 +75,7 @@ class MobileForgotPasswordPage extends StatelessWidget { context.pop(); }, child: Text( - AppStrings.backToSignInButton, + ForgotPasswordStrings.backToSignInButton, style: TextStyle( fontSize: 14.0.sp(), fontWeight: FontWeight.w500, diff --git a/lib/views/forgot_password/pages/t_forgot_password_page.dart b/lib/views/forgot_password/pages/t_forgot_password_page.dart index 83cc1f4..858a724 100644 --- a/lib/views/forgot_password/pages/t_forgot_password_page.dart +++ b/lib/views/forgot_password/pages/t_forgot_password_page.dart @@ -5,11 +5,11 @@ import 'package:provider/provider.dart'; import 'package:tm_app/core/utils/size_config.dart'; import '../../../core/constants/assets.dart'; -import '../../../core/constants/strings.dart'; import '../../../core/theme/colors.dart'; import '../../../view_models/auth_view_model.dart'; import '../../login/widgets/login_textfield.dart'; import '../../shared/base_button.dart'; +import '../strings/forgot_password_strings.dart'; class TabletForgotPasswordPage extends StatelessWidget { const TabletForgotPasswordPage({super.key}); @@ -35,7 +35,7 @@ class TabletForgotPasswordPage extends StatelessWidget { ), SizedBox(height: 72.0.h()), Text( - AppStrings.forgotPasswordTitle, + ForgotPasswordStrings.forgotPasswordTitle, style: TextStyle( fontSize: 28.0.sp(), fontWeight: FontWeight.bold, @@ -44,7 +44,7 @@ class TabletForgotPasswordPage extends StatelessWidget { ), SizedBox(height: 16.0.h()), Text( - AppStrings.forgotPasswordSubtitle, + ForgotPasswordStrings.forgotPasswordSubtitle, textAlign: TextAlign.center, style: TextStyle( fontSize: 14.0.sp(), @@ -56,13 +56,13 @@ class TabletForgotPasswordPage extends StatelessWidget { LoginTextField( controller: viewModel.emailController, focusNode: viewModel.emailFocus, - label: AppStrings.emailAddressHint, + label: ForgotPasswordStrings.emailAddressHint, isPassword: false, ), SizedBox(height: 70.0.h()), BaseButton( isEnabled: false, - text: AppStrings.resetLink, + text: ForgotPasswordStrings.resetLink, onPressed: () async { if (viewModel.isLoginEnabled) { await viewModel.login(); @@ -75,7 +75,7 @@ class TabletForgotPasswordPage extends StatelessWidget { context.pop(); }, child: Text( - AppStrings.backToSignInButton, + ForgotPasswordStrings.backToSignInButton, style: TextStyle( fontSize: 14.0.sp(), fontWeight: FontWeight.w500, diff --git a/lib/views/forgot_password/strings/forgot_password_strings.dart b/lib/views/forgot_password/strings/forgot_password_strings.dart new file mode 100644 index 0000000..e3c9c76 --- /dev/null +++ b/lib/views/forgot_password/strings/forgot_password_strings.dart @@ -0,0 +1,11 @@ +class ForgotPasswordStrings { + ForgotPasswordStrings._(); + + static const String forgotPassword = 'Forgot Password?'; + static const String forgotPasswordTitle = 'Forgot Password'; + static const String forgotPasswordSubtitle = + 'Enter your registered email and company ID and submit your request.'; + static const String emailAddressHint = 'Email Address'; + static const String backToSignInButton = 'Back to Sign In'; + static const String resetLink = 'Reset Link'; +} diff --git a/lib/views/home/pages/d_home_page.dart b/lib/views/home/pages/d_home_page.dart index 408c8fb..22f2022 100644 --- a/lib/views/home/pages/d_home_page.dart +++ b/lib/views/home/pages/d_home_page.dart @@ -1,13 +1,13 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:tm_app/core/constants/assets.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/routes/app_routes.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; import 'package:tm_app/view_models/home_view_model.dart'; import 'package:tm_app/views/shared/desktop_navigation_widget.dart'; +import '../strings/home_strings.dart'; import '../widgets.dart'; class DesktopHomePage extends StatelessWidget { @@ -107,7 +107,7 @@ class DesktopHomePage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ ProgressBarColumn( - text: AppStrings.partnership, + text: HomeStrings.partnership, value: homeViewModel.partnershipPercent, amount: homeViewModel.partnershipPercent.toString(), circularProgressIndicatorWidth: 176, @@ -115,7 +115,7 @@ class DesktopHomePage extends StatelessWidget { ), SizedBox(width: 106), ProgressBarColumn( - text: AppStrings.selfApply, + text: HomeStrings.selfApply, value: homeViewModel.selfApplyPercent, amount: homeViewModel.selfApplyPercent.toString(), circularProgressIndicatorWidth: 176, @@ -136,7 +136,7 @@ class DesktopHomePage extends StatelessWidget { child: TenderCard( backgroundColor: AppColors.primary20, iconPath: AssetsManager.arrows, - title: AppStrings.tenderSubmitted, + title: HomeStrings.tenderSubmitted, amount: homeViewModel .tenderApprovalsStateResponse! @@ -158,7 +158,7 @@ class DesktopHomePage extends StatelessWidget { child: TenderCard( backgroundColor: AppColors.primary10, iconPath: AssetsManager.approve, - title: AppStrings.approvedTenders, + title: HomeStrings.approvedTenders, amount: '0', textColor: AppColors.jellyBean, enableTap: true, @@ -173,7 +173,7 @@ class DesktopHomePage extends StatelessWidget { TenderCard( backgroundColor: AppColors.orange10, iconPath: AssetsManager.shield, - title: AppStrings.tenderValue, + title: HomeStrings.tenderValue, amount: '3', textColor: AppColors.orange, enableTap: true, @@ -185,7 +185,7 @@ class DesktopHomePage extends StatelessWidget { TenderCard( backgroundColor: AppColors.grey10, iconPath: AssetsManager.thumbLike, - title: AppStrings.likedTenders, + title: HomeStrings.likedTenders, amount: homeViewModel.feedbackStats?.totalLikes.toString() ?? '0', textColor: AppColors.grey80, enableTap: false, @@ -205,8 +205,8 @@ class DesktopHomePage extends StatelessWidget { alignment: Alignment.centerLeft, child: Text( isYourTenders - ? AppStrings.yourTenders - : AppStrings.recommendedTenders, + ? HomeStrings.yourTenders + : HomeStrings.recommendedTenders, style: TextStyle( fontSize: 18.0.sp(), fontWeight: FontWeight.w700, diff --git a/lib/views/home/pages/m_home_page.dart b/lib/views/home/pages/m_home_page.dart index 0c41598..d88e39c 100644 --- a/lib/views/home/pages/m_home_page.dart +++ b/lib/views/home/pages/m_home_page.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:tm_app/core/constants/assets.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/routes/app_routes.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; @@ -9,6 +8,7 @@ import 'package:tm_app/data/services/model/tender_approvals_state_response/tende import 'package:tm_app/view_models/home_view_model.dart'; import 'package:tm_app/views/shared/tender_app_bar.dart'; +import '../strings/home_strings.dart'; import '../widgets.dart'; class MobileHomePage extends StatelessWidget { @@ -17,7 +17,7 @@ class MobileHomePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - appBar: tenderMobileAppBar(title: AppStrings.home), + appBar: tenderMobileAppBar(title: HomeStrings.home), body: Consumer( builder: (context, homeViewModel, child) { if (homeViewModel.isLoading) { @@ -71,13 +71,13 @@ class MobileHomePage extends StatelessWidget { Spacer(), SizedBox(width: 20.0.w()), ProgressBarColumn( - text: AppStrings.partnership, + text: HomeStrings.partnership, value: homeViewModel.partnershipPercent, amount: homeViewModel.partnershipPercent.toString(), ), Spacer(), ProgressBarColumn( - text: AppStrings.selfApply, + text: HomeStrings.selfApply, value: homeViewModel.selfApplyPercent, amount: homeViewModel.selfApplyPercent.toString(), ), @@ -100,7 +100,7 @@ class MobileHomePage extends StatelessWidget { TenderCard( backgroundColor: AppColors.primary20, iconPath: AssetsManager.arrows, - title: AppStrings.tenderSubmitted, + title: HomeStrings.tenderSubmitted, amount: tenderApprovalsStateResponse.data!.submittedTenders.toString(), textColor: AppColors.mainBlue, @@ -112,7 +112,7 @@ class MobileHomePage extends StatelessWidget { TenderCard( backgroundColor: AppColors.primary10, iconPath: AssetsManager.approve, - title: AppStrings.approvedTenders, + title: HomeStrings.approvedTenders, amount: '0', textColor: AppColors.jellyBean, @@ -136,7 +136,7 @@ class MobileHomePage extends StatelessWidget { TenderCard( backgroundColor: AppColors.orange10, iconPath: AssetsManager.shield, - title: AppStrings.tenderValue, + title: HomeStrings.tenderValue, amount: '3', textColor: AppColors.orange, enableTap: true, @@ -145,7 +145,7 @@ class MobileHomePage extends StatelessWidget { TenderCard( backgroundColor: AppColors.grey10, iconPath: AssetsManager.thumbLike, - title: AppStrings.likedTenders, + title: HomeStrings.likedTenders, amount: homeViewModel.feedbackStats?.totalLikes.toString() ?? '0', textColor: AppColors.grey80, enableTap: false, @@ -161,7 +161,9 @@ class MobileHomePage extends StatelessWidget { return Padding( padding: EdgeInsets.symmetric(horizontal: 24.0.w()), child: Text( - isYourTenders ? AppStrings.yourTenders : AppStrings.recommendedTenders, + isYourTenders + ? HomeStrings.yourTenders + : HomeStrings.recommendedTenders, style: TextStyle( fontSize: 18.0.sp(), fontWeight: FontWeight.w700, diff --git a/lib/views/home/pages/t_home_page.dart b/lib/views/home/pages/t_home_page.dart index 05ba91e..2bff0a0 100644 --- a/lib/views/home/pages/t_home_page.dart +++ b/lib/views/home/pages/t_home_page.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:go_router/go_router.dart'; import 'package:provider/provider.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/routes/app_routes.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; @@ -11,6 +10,7 @@ import 'package:tm_app/view_models/home_view_model.dart'; import 'package:tm_app/views/shared/tablet_navigation_widget.dart'; import '../../../core/constants/assets.dart'; +import '../strings/home_strings.dart'; import '../widgets.dart'; class TabletHomePage extends StatelessWidget { @@ -128,7 +128,7 @@ class TabletHomePage extends StatelessWidget { Spacer(), SizedBox(width: 20.0.w()), ProgressBarColumn( - text: AppStrings.partnership, + text: HomeStrings.partnership, value: homeViewModel.partnershipPercent, amount: homeViewModel.partnershipPercent.toString(), circularProgressIndicatorWidth: 176.0, @@ -137,7 +137,7 @@ class TabletHomePage extends StatelessWidget { ), Spacer(), ProgressBarColumn( - text: AppStrings.selfApply, + text: HomeStrings.selfApply, value: homeViewModel.selfApplyPercent, amount: homeViewModel.selfApplyPercent.toString(), circularProgressIndicatorWidth: 176.0, @@ -161,7 +161,7 @@ class TabletHomePage extends StatelessWidget { child: TenderCard( backgroundColor: AppColors.primary20, iconPath: AssetsManager.arrows, - title: AppStrings.tenderSubmitted, + title: HomeStrings.tenderSubmitted, amount: tenderApprovalsStateResponse.data!.submittedTenders.toString(), @@ -179,7 +179,7 @@ class TabletHomePage extends StatelessWidget { child: TenderCard( backgroundColor: AppColors.primary10, iconPath: AssetsManager.approve, - title: AppStrings.approvedTenders, + title: HomeStrings.approvedTenders, amount: '0', textColor: AppColors.jellyBean, @@ -204,7 +204,7 @@ class TabletHomePage extends StatelessWidget { child: TenderCard( backgroundColor: AppColors.orange10, iconPath: AssetsManager.shield, - title: AppStrings.tenderValue, + title: HomeStrings.tenderValue, amount: '3', textColor: AppColors.orange, enableTap: true, @@ -218,7 +218,7 @@ class TabletHomePage extends StatelessWidget { child: TenderCard( backgroundColor: AppColors.grey10, iconPath: AssetsManager.thumbLike, - title: AppStrings.likedTenders, + title: HomeStrings.likedTenders, amount: homeViewModel.feedbackStats?.totalLikes.toString() ?? '0', textColor: AppColors.grey80, enableTap: false, @@ -234,7 +234,7 @@ class TabletHomePage extends StatelessWidget { Widget _yourTenderText(HomeViewModel homeViewModel) { final isYourTenders = homeViewModel.data?.data?.isNotEmpty ?? false; return Text( - isYourTenders ? AppStrings.yourTenders : AppStrings.recommendedTenders, + isYourTenders ? HomeStrings.yourTenders : HomeStrings.recommendedTenders, style: TextStyle( fontSize: 18.0.sp(), fontWeight: FontWeight.w700, diff --git a/lib/views/home/strings/home_strings.dart b/lib/views/home/strings/home_strings.dart new file mode 100644 index 0000000..08ad8f5 --- /dev/null +++ b/lib/views/home/strings/home_strings.dart @@ -0,0 +1,19 @@ +class HomeStrings { + HomeStrings._(); + + static const String home = 'Home'; + static const String partnership = 'Partnership'; + static const String selfApply = 'Self-apply'; + static const String contracting = 'Contracting'; + static const String tenderSubmitted = 'Tenders submitted'; + static const String approvedTenders = 'Approved tenders'; + static const String tenderValue = 'Tender Value'; + static const String thunderStatus = 'Thunder status'; + static const String likedTenders = 'Liked Tenders'; + static const String yourTenders = 'Your tenders'; + static const String recommendation = 'Recommendation'; + static const String welcome = 'Welcome'; + static const String tenderDeadline = 'Deadline'; + static const String recommendedTenders = 'Recommended Tenders'; + static const String tenderMatchProfile = 'Match with your profile'; +} diff --git a/lib/views/home/tenders_list_item.dart b/lib/views/home/tenders_list_item.dart index 1a5fee9..ccf647b 100644 --- a/lib/views/home/tenders_list_item.dart +++ b/lib/views/home/tenders_list_item.dart @@ -1,8 +1,8 @@ import 'package:country_flags/country_flags.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/data/services/model/tender_data/tender_data.dart'; +import 'package:tm_app/views/home/strings/home_strings.dart'; import 'package:tm_app/views/home/widgets/tender_card_progress_bar.dart'; import '../../core/constants/assets.dart'; @@ -53,7 +53,7 @@ class TendersListItem extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '${AppStrings.tenderDeadline} :', + '${HomeStrings.tenderDeadline} :', style: TextStyle( fontSize: 15.0.sp(), fontWeight: FontWeight.w500, diff --git a/lib/views/home/widgets/notification_card.dart b/lib/views/home/widgets/notification_card.dart index c042fa2..b2f8861 100644 --- a/lib/views/home/widgets/notification_card.dart +++ b/lib/views/home/widgets/notification_card.dart @@ -1,10 +1,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:tm_app/core/constants/assets.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; +import '../strings/home_strings.dart'; + class NotificationCard extends StatelessWidget { const NotificationCard({super.key}); @@ -26,7 +27,7 @@ class NotificationCard extends StatelessWidget { SvgPicture.asset(AssetsManager.notification), SizedBox(width: 8.0.w()), Text( - AppStrings.welcome, + HomeStrings.welcome, style: TextStyle( fontSize: 16.0.sp(), fontWeight: FontWeight.w500, diff --git a/lib/views/home/widgets/tender_card_progress_bar.dart b/lib/views/home/widgets/tender_card_progress_bar.dart index fd4aba5..6e6e5e9 100644 --- a/lib/views/home/widgets/tender_card_progress_bar.dart +++ b/lib/views/home/widgets/tender_card_progress_bar.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; +import 'package:tm_app/views/home/strings/home_strings.dart'; class TenderCardProgressBar extends StatelessWidget { const TenderCardProgressBar({super.key}); @@ -15,7 +15,7 @@ class TenderCardProgressBar extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - AppStrings.tenderMatchProfile, + HomeStrings.tenderMatchProfile, style: TextStyle( fontSize: 12.0.sp(), color: AppColors.grey80, diff --git a/lib/views/login/pages/login_desktop_page.dart b/lib/views/login/pages/login_desktop_page.dart index af88a3f..0b0cf3d 100644 --- a/lib/views/login/pages/login_desktop_page.dart +++ b/lib/views/login/pages/login_desktop_page.dart @@ -6,10 +6,10 @@ import 'package:provider/provider.dart'; import 'package:tm_app/core/theme/colors.dart'; import '../../../core/constants/assets.dart'; -import '../../../core/constants/strings.dart'; import '../../../core/routes/app_routes.dart'; import '../../../core/utils/size_config.dart'; import '../../../view_models/auth_view_model.dart'; +import '../strings/login_strings.dart'; import '../widgets/widgets.dart'; class LoginDesktopPage extends StatefulWidget { @@ -73,7 +73,7 @@ class _LoginDesktopPageState extends State { LoginTextField( controller: viewModel.usernameController, focusNode: viewModel.usernameFocus, - label: AppStrings.usernameLabel, + label: LoginStrings.usernameLabel, iconPath: AssetsManager.userIcon, fieldHeight: 60.0.h(), borderRedus: 12, @@ -83,7 +83,7 @@ class _LoginDesktopPageState extends State { LoginTextField( controller: viewModel.passwordController, focusNode: viewModel.passwordFocus, - label: AppStrings.passwordLabel, + label: LoginStrings.passwordLabel, iconPath: AssetsManager.passwordIcon, prefixIconPadding: 7.0.w(), isPassword: true, @@ -114,7 +114,7 @@ class _LoginDesktopPageState extends State { ForgotPasswordRouteData().push(context); }, child: Text( - AppStrings.forgotPassword, + LoginStrings.forgotPassword, style: TextStyle( fontSize: 14.0.sp(), fontWeight: FontWeight.w500, diff --git a/lib/views/login/pages/login_mobile_page.dart b/lib/views/login/pages/login_mobile_page.dart index 43c354e..f23a2ae 100644 --- a/lib/views/login/pages/login_mobile_page.dart +++ b/lib/views/login/pages/login_mobile_page.dart @@ -6,9 +6,9 @@ import 'package:tm_app/core/routes/app_routes.dart'; import 'package:tm_app/core/theme/colors.dart'; import '../../../core/constants/assets.dart'; -import '../../../core/constants/strings.dart'; import '../../../core/utils/size_config.dart'; import '../../../view_models/auth_view_model.dart'; +import '../strings/login_strings.dart'; import '../widgets/widgets.dart'; class LoginMobilePage extends StatefulWidget { @@ -72,7 +72,7 @@ class _LoginMobilePageState extends State { LoginTextField( controller: viewModel.usernameController, focusNode: viewModel.usernameFocus, - label: AppStrings.usernameLabel, + label: LoginStrings.usernameLabel, iconPath: AssetsManager.userIcon, ), SizedBox(height: 16.0.h()), @@ -80,7 +80,7 @@ class _LoginMobilePageState extends State { LoginTextField( controller: viewModel.passwordController, focusNode: viewModel.passwordFocus, - label: AppStrings.passwordLabel, + label: LoginStrings.passwordLabel, iconPath: AssetsManager.passwordIcon, isPassword: true, obscureText: viewModel.obscurePassword, @@ -110,7 +110,7 @@ class _LoginMobilePageState extends State { ForgotPasswordRouteData().push(context); }, child: Text( - AppStrings.forgotPassword, + LoginStrings.forgotPassword, style: TextStyle( fontSize: 14.0.sp(), fontWeight: FontWeight.w500, diff --git a/lib/views/login/pages/login_tablet_page.dart b/lib/views/login/pages/login_tablet_page.dart index 1047e57..1579f47 100644 --- a/lib/views/login/pages/login_tablet_page.dart +++ b/lib/views/login/pages/login_tablet_page.dart @@ -4,10 +4,10 @@ import 'package:provider/provider.dart'; import 'package:tm_app/core/theme/colors.dart'; import '../../../core/constants/assets.dart'; -import '../../../core/constants/strings.dart'; import '../../../core/routes/app_routes.dart'; import '../../../core/utils/size_config.dart'; import '../../../view_models/auth_view_model.dart'; +import '../strings/login_strings.dart'; import '../widgets/widgets.dart'; class LoginTabletPage extends StatefulWidget { @@ -65,7 +65,7 @@ class _LoginTabletPageState extends State { LoginTextField( controller: viewModel.usernameController, focusNode: viewModel.usernameFocus, - label: AppStrings.usernameLabel, + label: LoginStrings.usernameLabel, iconPath: AssetsManager.userIcon, fieldHeight: 60.0.h(), borderRedus: 12, @@ -75,7 +75,7 @@ class _LoginTabletPageState extends State { LoginTextField( controller: viewModel.passwordController, focusNode: viewModel.passwordFocus, - label: AppStrings.passwordLabel, + label: LoginStrings.passwordLabel, iconPath: AssetsManager.passwordIcon, prefixIconPadding: 4.0.w(), isPassword: true, @@ -107,7 +107,7 @@ class _LoginTabletPageState extends State { ForgotPasswordRouteData().push(context); }, child: Text( - AppStrings.forgotPassword, + LoginStrings.forgotPassword, style: TextStyle( fontSize: 14.0.sp(), fontWeight: FontWeight.w500, diff --git a/lib/views/login/strings/login_strings.dart b/lib/views/login/strings/login_strings.dart new file mode 100644 index 0000000..8f8d626 --- /dev/null +++ b/lib/views/login/strings/login_strings.dart @@ -0,0 +1,8 @@ +class LoginStrings { + static const signInTitle = 'Sign In'; + static const signInSubtitle = 'Enter valid username & password to continue'; + static const usernameLabel = 'User Name'; + static const passwordLabel = 'Password'; + static const loginButton = 'Login'; + static const forgotPassword = 'Forgot Password?'; +} diff --git a/lib/views/login/widgets/login_title.dart b/lib/views/login/widgets/login_title.dart index 233c9e2..d83cd31 100644 --- a/lib/views/login/widgets/login_title.dart +++ b/lib/views/login/widgets/login_title.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:tm_app/core/theme/colors.dart'; -import '../../../core/constants/strings.dart'; import '../../../core/utils/size_config.dart'; +import '../strings/login_strings.dart'; class LoginTitle extends StatelessWidget { const LoginTitle({super.key}); @@ -12,12 +12,12 @@ class LoginTitle extends StatelessWidget { return Column( children: [ Text( - AppStrings.signInTitle, + LoginStrings.signInTitle, style: TextStyle(fontSize: 28.0.sp(), fontWeight: FontWeight.w700), ), SizedBox(height: 8.0.h()), Text( - AppStrings.signInSubtitle, + LoginStrings.signInSubtitle, style: TextStyle( fontSize: 14.0.sp(), fontWeight: FontWeight.w400, diff --git a/lib/views/profile/pages/d_profile_page.dart b/lib/views/profile/pages/d_profile_page.dart index 1db81c4..05f7688 100644 --- a/lib/views/profile/pages/d_profile_page.dart +++ b/lib/views/profile/pages/d_profile_page.dart @@ -5,10 +5,11 @@ import 'package:tm_app/core/routes/app_routes.dart'; import 'package:tm_app/view_models/profile_view_model.dart'; import '../../../core/constants/assets.dart'; -import '../../../core/constants/strings.dart'; +import '../../../core/constants/common_strings.dart'; import '../../../core/theme/colors.dart'; import '../../../core/utils/size_config.dart'; import '../../shared/desktop_navigation_widget.dart'; +import '../strings/profile_strings.dart'; import '../widgets/theme_toggle.dart'; import '../widgets/title_description.dart'; @@ -64,7 +65,7 @@ class _DesktopProfilePageState extends State { } if (viewModel.companyProfileData == null) { - return Center(child: Text(AppStrings.noData)); + return Center(child: Text(CommonStrings.noData)); } return Column( @@ -100,24 +101,24 @@ class _DesktopProfilePageState extends State { children: [ SizedBox(height: 36.0.h()), TitleDescription( - title: AppStrings.companyName, + title: ProfileStrings.companyName, description: viewModel.companyProfileData!.name!, ), TitleDescription( - title: AppStrings.nationalId, + title: ProfileStrings.nationalId, description: viewModel.companyProfileData!.id!, ), TitleDescription( - title: AppStrings.registrationNumber, + title: ProfileStrings.registrationNumber, description: viewModel.companyProfileData!.registrationNumber!, ), TitleDescription( - title: AppStrings.businessType, + title: ProfileStrings.businessType, description: '-', ), TitleDescription( - title: AppStrings.founded, + title: ProfileStrings.founded, description: viewModel.companyProfileData!.foundedYear!.toString(), ), @@ -126,7 +127,7 @@ class _DesktopProfilePageState extends State { Align( alignment: AlignmentDirectional.centerStart, child: Text( - AppStrings.settings, + ProfileStrings.settings, style: TextStyle( fontSize: 20.0.sp(), fontWeight: FontWeight.w600, @@ -140,7 +141,7 @@ class _DesktopProfilePageState extends State { child: Row( children: [ Text( - AppStrings.appTheme, + ProfileStrings.appTheme, style: TextStyle( fontSize: 16.0.sp(), fontWeight: FontWeight.w400, @@ -178,7 +179,7 @@ class _DesktopProfilePageState extends State { ), alignment: Alignment.center, child: Text( - AppStrings.logout, + ProfileStrings.logout, style: TextStyle( fontSize: 14.0.sp(), fontWeight: FontWeight.w500, diff --git a/lib/views/profile/pages/m_profile_page.dart b/lib/views/profile/pages/m_profile_page.dart index 5710bd1..677fb93 100644 --- a/lib/views/profile/pages/m_profile_page.dart +++ b/lib/views/profile/pages/m_profile_page.dart @@ -7,9 +7,10 @@ import 'package:tm_app/views/profile/widgets/theme_toggle.dart'; import 'package:tm_app/views/shared/tender_app_bar.dart'; import '../../../core/constants/assets.dart'; -import '../../../core/constants/strings.dart'; +import '../../../core/constants/common_strings.dart'; import '../../../core/theme/colors.dart'; import '../../../core/utils/size_config.dart'; +import '../strings/profile_strings.dart'; import '../widgets/title_description.dart'; class MobileProfilePage extends StatefulWidget { @@ -52,7 +53,7 @@ class _MobileProfilePageState extends State { Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.backgroundColor, - appBar: tenderMobileAppBar(title: AppStrings.profile), + appBar: tenderMobileAppBar(title: ProfileStrings.profileTitle), body: Consumer( builder: (context, viewModel, child) { if (viewModel.isLoading) { @@ -66,7 +67,7 @@ class _MobileProfilePageState extends State { } if (viewModel.companyProfileData == null) { - return Center(child: Text(AppStrings.noData)); + return Center(child: Text(CommonStrings.noData)); } return Padding( @@ -78,24 +79,24 @@ class _MobileProfilePageState extends State { children: [ SizedBox(height: 36.0.h()), TitleDescription( - title: AppStrings.companyName, + title: ProfileStrings.companyName, description: viewModel.companyProfileData!.name!, ), TitleDescription( - title: AppStrings.nationalId, + title: ProfileStrings.nationalId, description: viewModel.companyProfileData!.id!, ), TitleDescription( - title: AppStrings.registrationNumber, + title: ProfileStrings.registrationNumber, description: viewModel.companyProfileData!.registrationNumber!, ), TitleDescription( - title: AppStrings.businessType, + title: ProfileStrings.businessType, description: '-', ), TitleDescription( - title: AppStrings.founded, + title: ProfileStrings.founded, description: viewModel.companyProfileData!.foundedYear!.toString(), ), @@ -103,7 +104,7 @@ class _MobileProfilePageState extends State { Align( alignment: AlignmentDirectional.centerStart, child: Text( - AppStrings.settings, + ProfileStrings.settings, style: TextStyle( fontSize: 20.0.sp(), fontWeight: FontWeight.w600, @@ -117,7 +118,7 @@ class _MobileProfilePageState extends State { child: Row( children: [ Text( - AppStrings.appTheme, + ProfileStrings.appTheme, style: TextStyle( fontSize: 16.0.sp(), fontWeight: FontWeight.w400, @@ -153,7 +154,7 @@ class _MobileProfilePageState extends State { ), alignment: Alignment.center, child: Text( - AppStrings.logout, + ProfileStrings.logout, style: TextStyle( fontSize: 14.0.sp(), fontWeight: FontWeight.w500, diff --git a/lib/views/profile/pages/t_profile_page.dart b/lib/views/profile/pages/t_profile_page.dart index ef544c6..1dba280 100644 --- a/lib/views/profile/pages/t_profile_page.dart +++ b/lib/views/profile/pages/t_profile_page.dart @@ -3,13 +3,14 @@ import 'package:flutter_svg/svg.dart'; import 'package:go_router/go_router.dart'; import 'package:provider/provider.dart'; import 'package:tm_app/core/constants/assets.dart'; -import 'package:tm_app/core/constants/strings.dart'; +import 'package:tm_app/core/constants/common_strings.dart'; import 'package:tm_app/core/routes/app_routes.dart'; import 'package:tm_app/view_models/profile_view_model.dart'; import '../../../core/theme/colors.dart'; import '../../../core/utils/size_config.dart'; import '../../shared/tablet_navigation_widget.dart'; +import '../strings/profile_strings.dart'; import '../widgets/theme_toggle.dart'; import '../widgets/title_description.dart'; @@ -64,7 +65,7 @@ class _TabletProfilePageState extends State { } if (viewModel.companyProfileData == null) { - return Center(child: Text(AppStrings.noData)); + return Center(child: Text(CommonStrings.noData)); } return SafeArea( @@ -124,24 +125,24 @@ class _TabletProfilePageState extends State { children: [ SizedBox(height: 128.0.h()), TitleDescription( - title: AppStrings.companyName, + title: ProfileStrings.companyName, description: viewModel.companyProfileData!.name!, ), TitleDescription( - title: AppStrings.nationalId, + title: ProfileStrings.nationalId, description: viewModel.companyProfileData!.id!, ), TitleDescription( - title: AppStrings.registrationNumber, + title: ProfileStrings.registrationNumber, description: viewModel.companyProfileData!.registrationNumber!, ), TitleDescription( - title: AppStrings.businessType, + title: ProfileStrings.businessType, description: '-', ), TitleDescription( - title: AppStrings.founded, + title: ProfileStrings.founded, description: viewModel.companyProfileData!.foundedYear!.toString(), ), @@ -150,7 +151,7 @@ class _TabletProfilePageState extends State { Align( alignment: AlignmentDirectional.centerStart, child: Text( - AppStrings.settings, + ProfileStrings.settings, style: TextStyle( fontSize: 20.0.sp(), fontWeight: FontWeight.w600, @@ -164,7 +165,7 @@ class _TabletProfilePageState extends State { child: Row( children: [ Text( - AppStrings.appTheme, + ProfileStrings.appTheme, style: TextStyle( fontSize: 16.0.sp(), fontWeight: FontWeight.w400, @@ -202,7 +203,7 @@ class _TabletProfilePageState extends State { ), alignment: Alignment.center, child: Text( - AppStrings.logout, + ProfileStrings.logout, style: TextStyle( fontSize: 14.0.sp(), fontWeight: FontWeight.w500, diff --git a/lib/views/profile/strings/profile_strings.dart b/lib/views/profile/strings/profile_strings.dart new file mode 100644 index 0000000..69f5cf7 --- /dev/null +++ b/lib/views/profile/strings/profile_strings.dart @@ -0,0 +1,14 @@ +class ProfileStrings { + ProfileStrings._(); + + static const String profile = 'Profile'; + static const String profileTitle = 'Profile'; + static const String settings = 'Settings'; + static const String appTheme = 'App Theme'; + static const String companyName = 'Company Name'; + static const String nationalId = 'National ID'; + static const String registrationNumber = 'Registration No.'; + static const String businessType = 'Business Type'; + static const String founded = 'Founded'; + static const String logout = 'Logout'; +} diff --git a/lib/views/shared/base_button.dart b/lib/views/shared/base_button.dart index b0b193f..6eee16d 100644 --- a/lib/views/shared/base_button.dart +++ b/lib/views/shared/base_button.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; -import '../../core/constants/strings.dart'; import '../../core/theme/colors.dart'; import '../../core/utils/size_config.dart'; +import '../login/strings/login_strings.dart'; class BaseButton extends StatelessWidget { final bool isEnabled; @@ -73,7 +73,7 @@ class BaseButton extends StatelessWidget { ), ), child: Text( - text ?? AppStrings.loginButton, + text ?? LoginStrings.loginButton, style: TextStyle( fontSize: 16.0.sp(), fontWeight: FontWeight.bold, diff --git a/lib/views/shared/desktop_navigation_widget.dart b/lib/views/shared/desktop_navigation_widget.dart index 0a0166d..9f88734 100644 --- a/lib/views/shared/desktop_navigation_widget.dart +++ b/lib/views/shared/desktop_navigation_widget.dart @@ -1,9 +1,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:tm_app/core/constants/assets.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; +import 'package:tm_app/views/home/strings/home_strings.dart'; +import 'package:tm_app/views/profile/strings/profile_strings.dart'; +import 'package:tm_app/views/tenders/strings/tenders_strings.dart'; class DesktopNavigationWidget extends StatelessWidget { const DesktopNavigationWidget({ @@ -32,7 +34,7 @@ class DesktopNavigationWidget extends StatelessWidget { Spacer(), _navigationItem( context: context, - text: AppStrings.home, + text: HomeStrings.home, isActive: currentIndex == 0, onTap: () => onTabChanged(0), iconPath: AssetsManager.home, @@ -41,7 +43,7 @@ class DesktopNavigationWidget extends StatelessWidget { SizedBox(width: 24), _navigationItem( context: context, - text: AppStrings.tendersTitle, + text: TendersStrings.tendersTitle, isActive: currentIndex == 1, onTap: () => onTabChanged(1), iconPath: AssetsManager.tenders, @@ -50,7 +52,7 @@ class DesktopNavigationWidget extends StatelessWidget { SizedBox(width: 24), _navigationItem( context: context, - text: AppStrings.profile, + text: ProfileStrings.profileTitle, isActive: currentIndex == 2, onTap: () => onTabChanged(2), iconPath: AssetsManager.profile, diff --git a/lib/views/shared/tablet_navigation_widget.dart b/lib/views/shared/tablet_navigation_widget.dart index ef733ba..60cde79 100644 --- a/lib/views/shared/tablet_navigation_widget.dart +++ b/lib/views/shared/tablet_navigation_widget.dart @@ -1,9 +1,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:tm_app/core/constants/assets.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; +import 'package:tm_app/views/home/strings/home_strings.dart'; +import 'package:tm_app/views/profile/strings/profile_strings.dart'; +import 'package:tm_app/views/tenders/strings/tenders_strings.dart'; class TabletNavigationWidget extends StatelessWidget { const TabletNavigationWidget({ @@ -26,7 +28,7 @@ class TabletNavigationWidget extends StatelessWidget { SizedBox(height: 48.0.h()), _navigationItem( context: context, - text: AppStrings.home, + text: HomeStrings.home, isActive: currentIndex == 0, onTap: () => onTabChanged(0), iconPath: AssetsManager.home, @@ -34,7 +36,7 @@ class TabletNavigationWidget extends StatelessWidget { ), _navigationItem( context: context, - text: AppStrings.tendersTitle, + text: TendersStrings.tendersTitle, isActive: currentIndex == 1, onTap: () => onTabChanged(1), iconPath: AssetsManager.tenders, @@ -42,7 +44,7 @@ class TabletNavigationWidget extends StatelessWidget { ), _navigationItem( context: context, - text: AppStrings.profile, + text: ProfileStrings.profileTitle, isActive: currentIndex == 2, onTap: () => onTabChanged(2), iconPath: AssetsManager.profile, diff --git a/lib/views/tenders/pages/d_tenders_page.dart b/lib/views/tenders/pages/d_tenders_page.dart index 5fcd1fa..071533e 100644 --- a/lib/views/tenders/pages/d_tenders_page.dart +++ b/lib/views/tenders/pages/d_tenders_page.dart @@ -6,7 +6,7 @@ import 'package:tm_app/view_models/tenders_view_model.dart'; import 'package:tm_app/views/shared/desktop_navigation_widget.dart'; import 'package:tm_app/views/tenders/widgets/main_tenders_slider.dart'; -import '../../../core/constants/strings.dart'; +import '../../../core/constants/common_strings.dart'; import '../../../core/routes/app_routes.dart'; class DesktopTendersPage extends StatefulWidget { @@ -93,7 +93,7 @@ class _DesktopTendersPageState extends State { } if (viewModel.tendersResponse?.data?.tenders == null || viewModel.tendersResponse!.data!.tenders!.isEmpty) { - return Center(child: Text(AppStrings.noData)); + return Center(child: Text(CommonStrings.noData)); } return SizedBox( width: 740, diff --git a/lib/views/tenders/pages/m_tenders_page.dart b/lib/views/tenders/pages/m_tenders_page.dart index 4691cf6..9c42a64 100644 --- a/lib/views/tenders/pages/m_tenders_page.dart +++ b/lib/views/tenders/pages/m_tenders_page.dart @@ -3,9 +3,10 @@ import 'package:provider/provider.dart'; import 'package:tm_app/core/utils/size_config.dart'; import 'package:tm_app/view_models/tenders_view_model.dart'; -import '../../../core/constants/strings.dart'; +import '../../../core/constants/common_strings.dart'; import '../../../core/theme/colors.dart'; import '../../shared/tender_app_bar.dart'; +import '../strings/tenders_strings.dart'; import '../widgets/main_tenders_slider.dart'; class MobileTendersPage extends StatefulWidget { @@ -53,7 +54,7 @@ class _MobileTendersPageState extends State { Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.backgroundColor, - appBar: tenderMobileAppBar(title: AppStrings.tendersTitle), + appBar: tenderMobileAppBar(title: TendersStrings.tendersTitle), body: Consumer( builder: (context, viewModel, child) { if (viewModel.isLoading) { @@ -67,7 +68,7 @@ class _MobileTendersPageState extends State { if (viewModel.tendersResponse?.data?.tenders == null || viewModel.tendersResponse!.data!.tenders!.isEmpty) { - return Center(child: Text(AppStrings.noData)); + return Center(child: Text(CommonStrings.noData)); } return Padding( diff --git a/lib/views/tenders/pages/t_tenders_page.dart b/lib/views/tenders/pages/t_tenders_page.dart index 60e008e..9e513fa 100644 --- a/lib/views/tenders/pages/t_tenders_page.dart +++ b/lib/views/tenders/pages/t_tenders_page.dart @@ -9,7 +9,7 @@ import 'package:tm_app/views/shared/tablet_navigation_widget.dart'; import 'package:tm_app/views/tenders/widgets/main_tenders_slider.dart'; import '../../../core/constants/assets.dart'; -import '../../../core/constants/strings.dart'; +import '../../../core/constants/common_strings.dart'; import '../../../core/routes/app_routes.dart'; class TabletTendersPage extends StatefulWidget { @@ -89,7 +89,7 @@ class _TabletTendersPageState extends State { } if (viewModel.tendersResponse?.data?.tenders == null || viewModel.tendersResponse!.data!.tenders!.isEmpty) { - return Center(child: Text(AppStrings.noData)); + return Center(child: Text(CommonStrings.noData)); } return Padding( padding: EdgeInsets.only(right: 24.0.w(), top: 128.0.h()), diff --git a/lib/views/tenders/strings/tenders_strings.dart b/lib/views/tenders/strings/tenders_strings.dart new file mode 100644 index 0000000..4a06dce --- /dev/null +++ b/lib/views/tenders/strings/tenders_strings.dart @@ -0,0 +1,11 @@ +class TendersStrings { + TendersStrings._(); + + static const String tendersTitle = 'Tenders'; + static const String tenderSeeMore = 'See More'; + static const String reject = 'Reject'; + static const String submit = 'Submit'; + static const String dislike = 'Dislike'; + static const String like = 'Like'; + static const String tenderDeadlineLabel = 'Deadline'; +} diff --git a/lib/views/tenders/widgets/tender_action_buttons_row.dart b/lib/views/tenders/widgets/tender_action_buttons_row.dart index 725a39e..38ac042 100644 --- a/lib/views/tenders/widgets/tender_action_buttons_row.dart +++ b/lib/views/tenders/widgets/tender_action_buttons_row.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/data/services/model/tender_data/tender_data.dart'; import 'package:tm_app/view_models/tenders_view_model.dart'; @@ -10,6 +9,7 @@ import '../../../core/theme/colors.dart'; import '../../../core/utils/size_config.dart'; import '../../shared/select_submission_bottom_sheet.dart'; import '../../shared/select_submission_dialog.dart'; +import '../strings/tenders_strings.dart'; class TenderActionButtonsRow extends StatelessWidget { final TenderData tender; @@ -57,7 +57,7 @@ class TenderActionButtonsRow extends StatelessWidget { final isRejected = approval?.status == 'rejected'; return Tooltip( - message: AppStrings.reject, + message: TendersStrings.reject, child: InkWell( splashColor: Colors.transparent, onTap: () { @@ -89,7 +89,7 @@ class TenderActionButtonsRow extends StatelessWidget { SizedBox(height: 8.0.h()), if (!isDesktop) Text( - AppStrings.reject, + TendersStrings.reject, style: TextStyle( fontSize: 12.0.sp(), fontWeight: FontWeight.w400, @@ -112,7 +112,7 @@ class TenderActionButtonsRow extends StatelessWidget { final isApproved = approval?.status == 'submitted'; return Tooltip( - message: AppStrings.submit, + message: TendersStrings.submit, child: InkWell( splashColor: Colors.transparent, onTap: () { @@ -180,7 +180,7 @@ class TenderActionButtonsRow extends StatelessWidget { SizedBox(height: 8.0.h()), if (!isDesktop) Text( - AppStrings.submit, + TendersStrings.submit, style: TextStyle( fontSize: 12.0.sp(), fontWeight: FontWeight.w400, @@ -203,7 +203,7 @@ class TenderActionButtonsRow extends StatelessWidget { final isDisliked = feedback?.feedbackType == 'dislike'; return Tooltip( - message: AppStrings.dislike, + message: TendersStrings.dislike, child: InkWell( splashColor: Colors.transparent, onTap: () { @@ -227,7 +227,7 @@ class TenderActionButtonsRow extends StatelessWidget { SizedBox(height: 8.0.h()), if (!isDesktop) Text( - AppStrings.dislike, + TendersStrings.dislike, style: TextStyle( fontSize: 12.0.sp(), fontWeight: FontWeight.w400, @@ -250,7 +250,7 @@ class TenderActionButtonsRow extends StatelessWidget { final isLiked = feedback?.feedbackType == 'like'; return Tooltip( - message: AppStrings.like, + message: TendersStrings.like, child: InkWell( splashColor: Colors.transparent, onTap: () { @@ -271,7 +271,7 @@ class TenderActionButtonsRow extends StatelessWidget { SizedBox(height: 8.0.h()), if (!isDesktop) Text( - AppStrings.like, + TendersStrings.like, style: TextStyle( fontSize: 12.0.sp(), fontWeight: FontWeight.w400, diff --git a/lib/views/tenders/widgets/tender_card.dart b/lib/views/tenders/widgets/tender_card.dart index 66cbdc7..13f5ce9 100644 --- a/lib/views/tenders/widgets/tender_card.dart +++ b/lib/views/tenders/widgets/tender_card.dart @@ -2,7 +2,6 @@ import 'package:country_flags/country_flags.dart'; import 'package:flutter/material.dart' hide DateUtils; import 'package:flutter_svg/svg.dart'; import 'package:provider/provider.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/routes/app_routes.dart'; import 'package:tm_app/data/services/model/tender_data/tender_data.dart'; @@ -11,6 +10,8 @@ import '../../../core/theme/colors.dart'; import '../../../core/utils/date_utils.dart'; import '../../../core/utils/size_config.dart'; import '../../../view_models/tenders_view_model.dart'; +import '../../detail/strings/tender_details_strings.dart'; +import '../strings/tenders_strings.dart'; import 'tender_action_buttons_row.dart'; class TenderCard extends StatelessWidget { @@ -134,7 +135,7 @@ class TenderCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - AppStrings.tenderDeadlineLabel, + TendersStrings.tenderDeadlineLabel, style: TextStyle( color: AppColors.textBlue, fontSize: 14.0.sp(), @@ -194,7 +195,7 @@ class TenderCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - AppStrings.tenderMatchProfile, + TenderDetailsStrings.tenderMatchProfile, style: TextStyle( color: AppColors.grey80, fontSize: 14.0.sp(), @@ -286,7 +287,7 @@ class TenderCard extends StatelessWidget { borderRadius: BorderRadius.circular(100), ), child: Text( - AppStrings.tenderSeeMore, + TendersStrings.tenderSeeMore, style: TextStyle( color: AppColors.mainBlue, fontSize: 14.0.sp(), diff --git a/lib/views/your_tenders/pages/your_tenders_desktop_page.dart b/lib/views/your_tenders/pages/your_tenders_desktop_page.dart index 1eb932b..dd0a340 100644 --- a/lib/views/your_tenders/pages/your_tenders_desktop_page.dart +++ b/lib/views/your_tenders/pages/your_tenders_desktop_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:go_router/go_router.dart'; import 'package:provider/provider.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/view_models/your_tenders_view_model.dart'; @@ -7,6 +6,7 @@ import 'package:tm_app/views/your_tenders/widgets/filter_button.dart'; import 'package:tm_app/views/your_tenders/widgets/tablet_desktop_appbar.dart'; import 'package:tm_app/views/your_tenders/widgets/tenders_submitted.dart'; +import '../../../core/routes/app_routes.dart'; import '../../shared/desktop_navigation_widget.dart'; class YourTendersDesktopPage extends StatefulWidget { @@ -50,15 +50,14 @@ class _YourTendersDesktopPageState extends State switch (index) { case 0: // Navigate to home - Router.neglect(context, () => context.go('/home')); + Router.neglect(context, () => HomeRouteData().go(context)); break; case 1: // Already on tenders break; case 2: // Navigate to profile - // context.go('/profile'); - Router.neglect(context, () => context.go('/profile')); + Router.neglect(context, () => ProfileRouteData().go(context)); break; } }, diff --git a/lib/views/your_tenders/pages/your_tenders_mobile_page.dart b/lib/views/your_tenders/pages/your_tenders_mobile_page.dart index 657741e..858f193 100644 --- a/lib/views/your_tenders/pages/your_tenders_mobile_page.dart +++ b/lib/views/your_tenders/pages/your_tenders_mobile_page.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:tm_app/core/constants/strings.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/view_models/your_tenders_view_model.dart'; import 'package:tm_app/views/shared/tender_app_bar.dart'; +import 'package:tm_app/views/your_tenders/strings/your_tenders_strings.dart'; import 'package:tm_app/views/your_tenders/widgets/filter_button.dart'; import 'package:tm_app/views/your_tenders/widgets/tenders_submitted.dart'; @@ -14,7 +14,7 @@ class YourTendersMobilePage extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.backgroundColor, - appBar: appBar(context: context, title: AppStrings.yourTenders), + appBar: appBar(context: context, title: YourTendersStrings.yourTenders), body: Column( children: [ FilterButton(platformType: PlatformType.mobile), diff --git a/lib/views/your_tenders/strings/your_tenders_strings.dart b/lib/views/your_tenders/strings/your_tenders_strings.dart new file mode 100644 index 0000000..d01e874 --- /dev/null +++ b/lib/views/your_tenders/strings/your_tenders_strings.dart @@ -0,0 +1,16 @@ +class YourTendersStrings { + YourTendersStrings._(); + + static const String yourTenders = 'Your tenders'; + static const String yourTendersTitle = 'Your tenders'; + static const filter = 'Filter'; + static const selectDateRange = 'Select date range'; + static const status = 'Status'; + static const all = 'All'; + static const likeTenders = 'Like tenders'; + static const dislikeTenders = 'Dislike tenders'; + static const tendersSubmitted = 'Tenders submitted'; + static const confirm = 'Confirm'; + static const startDate = 'YYYY/MM/DD'; + static const endDate = 'YYYY/MM/DD'; +} diff --git a/lib/views/your_tenders/widgets/tablet_desktop_appbar.dart b/lib/views/your_tenders/widgets/tablet_desktop_appbar.dart index 5933efd..66b18c2 100644 --- a/lib/views/your_tenders/widgets/tablet_desktop_appbar.dart +++ b/lib/views/your_tenders/widgets/tablet_desktop_appbar.dart @@ -4,8 +4,8 @@ import 'package:go_router/go_router.dart'; import 'package:tm_app/core/utils/size_config.dart'; import '../../../core/constants/assets.dart'; -import '../../../core/constants/strings.dart'; import '../../../core/theme/colors.dart'; +import '../strings/your_tenders_strings.dart'; class TabletDesktopAppbar extends StatelessWidget { const TabletDesktopAppbar({super.key}); @@ -20,7 +20,7 @@ class TabletDesktopAppbar extends StatelessWidget { ), SizedBox(width: 8.0.w()), Text( - AppStrings.yourTendersTitle, + YourTendersStrings.yourTendersTitle, style: TextStyle( fontSize: 20, fontWeight: FontWeight.w600,