delete likes in liked screen

This commit is contained in:
amirrezaghabeli
2025-09-03 15:15:37 +03:30
parent e8ed6ae42f
commit 777d9c3e70
8 changed files with 158 additions and 93 deletions
@@ -61,7 +61,9 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
final feedback = viewModel.data?.data?.feedback ?? [];
if (feedback.isEmpty) {
return const Center(child: Text('Nothing to show'));
return const Center(
child: Text('You havent liked any tenders yet.'),
);
}
final currentPage = viewModel.currentPage;
@@ -140,8 +142,11 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
final pageNumber = index + 1;
return ListTile(
title: Text('Page $pageNumber'),
onTap: () =>
Navigator.pop(context, pageNumber),
onTap:
() => Navigator.pop(
context,
pageNumber,
),
);
},
),
@@ -31,7 +31,7 @@ class _LikedTendersMobilePageState extends State<LikedTendersMobilePage> {
}
final max = _scrollController.position.maxScrollExtent;
final pos = _scrollController.position.pixels;
const threshold = 200.0;
const threshold = 200.0;
if (max - pos <= threshold) {
final vm = Provider.of<LikedTendersViewModel>(context, listen: false);
vm.loadMoreIfNeeded();
@@ -71,10 +71,13 @@ class _LikedTendersMobilePageState extends State<LikedTendersMobilePage> {
final feedback = viewModel.data?.data?.feedback ?? [];
if (feedback.isEmpty) {
return const Center(child: Text('Nothing to show'));
return const Center(
child: Text('You havent liked any tenders yet.'),
);
}
final itemCount = feedback.length + (viewModel.isLoadingMore ? 1 : 0);
final itemCount =
feedback.length + (viewModel.isLoadingMore ? 1 : 0);
return RefreshIndicator(
onRefresh: () async {
@@ -93,16 +96,18 @@ class _LikedTendersMobilePageState extends State<LikedTendersMobilePage> {
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,
padding: EdgeInsets.symmetric(horizontal: 20.0.w()),
padding: EdgeInsets.symmetric(
horizontal: 20.0.w(),
),
child: SvgPicture.asset(AssetsManager.trash),
),
onDismissed: (_) {
if (item.id != null) {
viewModel.removeTenderById(item.id!);
if (item.tenderId != null) {
viewModel.removeTenderById(item.tenderId!);
}
},
child: LikedListItem(tender: item.tender!),
@@ -1,13 +1,31 @@
import 'package:flutter/material.dart';
import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/views/shared/responsive_builder.dart';
import 'package:provider/provider.dart';
import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/view_models/liked_tenders_view_model.dart';
import 'package:tm_app/views/liked_tenders/pages/liked_tenders_desktop_page.dart';
import 'package:tm_app/views/liked_tenders/pages/liked_tenders_mobile_page.dart';
import 'package:tm_app/views/liked_tenders/pages/liked_tenders_tablet_page.dart';
import 'package:tm_app/views/shared/responsive_builder.dart';
class LikedTendersScreen extends StatelessWidget {
class LikedTendersScreen extends StatefulWidget {
const LikedTendersScreen({super.key});
@override
State<LikedTendersScreen> createState() => _LikedTendersScreenState();
}
class _LikedTendersScreenState extends State<LikedTendersScreen> {
late final LikedTendersViewModel viewModel;
@override
void initState() {
viewModel = context.read<LikedTendersViewModel>();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
viewModel.getLikedTenders(reset: true);
});
super.initState();
}
@override
Widget build(BuildContext context) {
SizeConfig.init(context);
@@ -68,7 +68,9 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
final feedback = viewModel.data?.data?.feedback ?? [];
if (feedback.isEmpty) {
return const Center(child: Text('Nothing to show'));
return const Center(
child: Text('You havent liked any tenders yet.'),
);
}
final currentPage = viewModel.currentPage;