delete like from liked screens
This commit is contained in:
@@ -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/mobile_shell_page.dart';
|
||||||
import 'package:tm_app/core/routes/app_shell/tablet_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/home_view_model.dart';
|
||||||
|
import 'package:tm_app/view_models/tenders_view_model.dart';
|
||||||
import 'package:tm_app/views/shared/responsive_builder.dart';
|
import 'package:tm_app/views/shared/responsive_builder.dart';
|
||||||
|
|
||||||
class AppShellScreen extends StatelessWidget {
|
class AppShellScreen extends StatelessWidget {
|
||||||
@@ -16,13 +17,22 @@ class AppShellScreen extends StatelessWidget {
|
|||||||
if (index == navigationShell.currentIndex) {
|
if (index == navigationShell.currentIndex) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Navigate first
|
||||||
navigationShell.goBranch(
|
navigationShell.goBranch(
|
||||||
index,
|
index,
|
||||||
initialLocation: index == navigationShell.currentIndex,
|
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
|
@override
|
||||||
|
|||||||
@@ -93,8 +93,8 @@ class TendersViewModel with ChangeNotifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> getTenders() async {
|
Future<void> getTenders() async {
|
||||||
|
clearAll(); // Clear all data before fetching new tenders
|
||||||
_isLoading = true;
|
_isLoading = true;
|
||||||
_errorMessage = null;
|
|
||||||
_currentOffset = 0;
|
_currentOffset = 0;
|
||||||
_hasMoreData = true;
|
_hasMoreData = true;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
@@ -466,4 +466,33 @@ class TendersViewModel with ChangeNotifier {
|
|||||||
void updateHome() {
|
void updateHome() {
|
||||||
_homeViewModel.init();
|
_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(
|
return Padding(
|
||||||
padding: EdgeInsets.only(bottom: 20.0.h()),
|
padding: EdgeInsets.only(bottom: 20.0.h()),
|
||||||
child: Dismissible(
|
child: Dismissible(
|
||||||
key: ValueKey(item.id ?? index),
|
key: ValueKey(item.tenderId ?? index),
|
||||||
direction: DismissDirection.endToStart,
|
direction: DismissDirection.endToStart,
|
||||||
background: Container(
|
background: Container(
|
||||||
alignment: Alignment.centerRight,
|
alignment: Alignment.centerRight,
|
||||||
@@ -99,8 +99,10 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
onDismissed: (_) {
|
onDismissed: (_) {
|
||||||
if (item.id != null) {
|
if (item.tenderId != null) {
|
||||||
viewModel.removeTenderById(item.id!);
|
viewModel.removeTenderById(
|
||||||
|
item.tenderId!,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: LikedListItem(tender: item.tender!),
|
child: LikedListItem(tender: item.tender!),
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
|
|||||||
return Padding(
|
return Padding(
|
||||||
padding: EdgeInsets.only(bottom: 20.0.h()),
|
padding: EdgeInsets.only(bottom: 20.0.h()),
|
||||||
child: Dismissible(
|
child: Dismissible(
|
||||||
key: ValueKey(item.id ?? index),
|
key: ValueKey(item.tenderId ?? index),
|
||||||
direction: DismissDirection.endToStart,
|
direction: DismissDirection.endToStart,
|
||||||
background: Container(
|
background: Container(
|
||||||
alignment: Alignment.centerRight,
|
alignment: Alignment.centerRight,
|
||||||
@@ -106,8 +106,10 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
onDismissed: (_) {
|
onDismissed: (_) {
|
||||||
if (item.id != null) {
|
if (item.tenderId != null) {
|
||||||
viewModel.removeTenderById(item.id!);
|
viewModel.removeTenderById(
|
||||||
|
item.tenderId!,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: LikedListItem(tender: item.tender!),
|
child: LikedListItem(tender: item.tender!),
|
||||||
|
|||||||
Reference in New Issue
Block a user