delete like from liked screens

This commit is contained in:
amirrezaghabeli
2025-09-03 16:07:02 +03:30
parent 777d9c3e70
commit 18f0e2a661
4 changed files with 53 additions and 10 deletions
@@ -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<HomeViewModel>().init();
}
// Then trigger data loading after navigation is complete
WidgetsBinding.instance.addPostFrameCallback((_) {
if (index == 0) {
context.read<HomeViewModel>().init();
}
if (index == 1) {
context.read<TendersViewModel>().getTenders();
}
});
}
@override
+30 -1
View File
@@ -93,8 +93,8 @@ class TendersViewModel with ChangeNotifier {
}
Future<void> 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();
}
}
@@ -87,7 +87,7 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
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<LikedTendersDesktopPage> {
),
),
onDismissed: (_) {
if (item.id != null) {
viewModel.removeTenderById(item.id!);
if (item.tenderId != null) {
viewModel.removeTenderById(
item.tenderId!,
);
}
},
child: LikedListItem(tender: item.tender!),
@@ -94,7 +94,7 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
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<LikedTendersTabletPage> {
),
),
onDismissed: (_) {
if (item.id != null) {
viewModel.removeTenderById(item.id!);
if (item.tenderId != null) {
viewModel.removeTenderById(
item.tenderId!,
);
}
},
child: LikedListItem(tender: item.tender!),