From 18f0e2a66108449922ea34432c6836e87301cbd5 Mon Sep 17 00:00:00 2001 From: amirrezaghabeli Date: Wed, 3 Sep 2025 16:07:02 +0330 Subject: [PATCH] delete like from liked screens --- .../routes/app_shell/app_shell_screen.dart | 16 ++++++++-- lib/view_models/tenders_view_model.dart | 31 ++++++++++++++++++- .../pages/liked_tenders_desktop_page.dart | 8 +++-- .../pages/liked_tenders_tablet_page.dart | 8 +++-- 4 files changed, 53 insertions(+), 10 deletions(-) diff --git a/lib/core/routes/app_shell/app_shell_screen.dart b/lib/core/routes/app_shell/app_shell_screen.dart index 3674a96..a45123e 100644 --- a/lib/core/routes/app_shell/app_shell_screen.dart +++ b/lib/core/routes/app_shell/app_shell_screen.dart @@ -5,6 +5,7 @@ import 'package:tm_app/core/routes/app_shell/desktop_shell_page.dart'; import 'package:tm_app/core/routes/app_shell/mobile_shell_page.dart'; import 'package:tm_app/core/routes/app_shell/tablet_shell_page.dart'; import 'package:tm_app/view_models/home_view_model.dart'; +import 'package:tm_app/view_models/tenders_view_model.dart'; import 'package:tm_app/views/shared/responsive_builder.dart'; class AppShellScreen extends StatelessWidget { @@ -16,13 +17,22 @@ class AppShellScreen extends StatelessWidget { if (index == navigationShell.currentIndex) { return; } + + // Navigate first navigationShell.goBranch( index, initialLocation: index == navigationShell.currentIndex, ); - if (index == 0) { - context.read().init(); - } + + // Then trigger data loading after navigation is complete + WidgetsBinding.instance.addPostFrameCallback((_) { + if (index == 0) { + context.read().init(); + } + if (index == 1) { + context.read().getTenders(); + } + }); } @override diff --git a/lib/view_models/tenders_view_model.dart b/lib/view_models/tenders_view_model.dart index a1142f7..f95c7f7 100644 --- a/lib/view_models/tenders_view_model.dart +++ b/lib/view_models/tenders_view_model.dart @@ -93,8 +93,8 @@ class TendersViewModel with ChangeNotifier { } Future getTenders() async { + clearAll(); // Clear all data before fetching new tenders _isLoading = true; - _errorMessage = null; _currentOffset = 0; _hasMoreData = true; notifyListeners(); @@ -466,4 +466,33 @@ class TendersViewModel with ChangeNotifier { void updateHome() { _homeViewModel.init(); } + + /// Clear all feedbacks + void clearFeedbacks() { + feedbacks.clear(); + _feedbackData = null; + _feedbackErrorMessage = null; + notifyListeners(); + } + + /// Clear all tenders + void clearTenders() { + _tendersResponse = null; + _errorMessage = null; + _currentOffset = 0; + _hasMoreData = true; + currentPage = 1; + notifyListeners(); + } + + /// Clear all data (tenders, feedbacks, and approvals) + void clearAll() { + clearTenders(); + clearFeedbacks(); + tenderApprovals.clear(); + _tenderApprovalData = null; + _tenderApprovalToggleData = null; + _tenderApprovalErrorMessage = null; + notifyListeners(); + } } diff --git a/lib/views/liked_tenders/pages/liked_tenders_desktop_page.dart b/lib/views/liked_tenders/pages/liked_tenders_desktop_page.dart index b08c7c2..d1bbb81 100644 --- a/lib/views/liked_tenders/pages/liked_tenders_desktop_page.dart +++ b/lib/views/liked_tenders/pages/liked_tenders_desktop_page.dart @@ -87,7 +87,7 @@ class _LikedTendersDesktopPageState extends State { return Padding( padding: EdgeInsets.only(bottom: 20.0.h()), child: Dismissible( - key: ValueKey(item.id ?? index), + key: ValueKey(item.tenderId ?? index), direction: DismissDirection.endToStart, background: Container( alignment: Alignment.centerRight, @@ -99,8 +99,10 @@ class _LikedTendersDesktopPageState extends State { ), ), onDismissed: (_) { - if (item.id != null) { - viewModel.removeTenderById(item.id!); + if (item.tenderId != null) { + viewModel.removeTenderById( + item.tenderId!, + ); } }, child: LikedListItem(tender: item.tender!), diff --git a/lib/views/liked_tenders/pages/liked_tenders_tablet_page.dart b/lib/views/liked_tenders/pages/liked_tenders_tablet_page.dart index 4260732..f8325d6 100644 --- a/lib/views/liked_tenders/pages/liked_tenders_tablet_page.dart +++ b/lib/views/liked_tenders/pages/liked_tenders_tablet_page.dart @@ -94,7 +94,7 @@ class _LikedTendersTabletPageState extends State { return Padding( padding: EdgeInsets.only(bottom: 20.0.h()), child: Dismissible( - key: ValueKey(item.id ?? index), + key: ValueKey(item.tenderId ?? index), direction: DismissDirection.endToStart, background: Container( alignment: Alignment.centerRight, @@ -106,8 +106,10 @@ class _LikedTendersTabletPageState extends State { ), ), onDismissed: (_) { - if (item.id != null) { - viewModel.removeTenderById(item.id!); + if (item.tenderId != null) { + viewModel.removeTenderById( + item.tenderId!, + ); } }, child: LikedListItem(tender: item.tender!),