your tenders apprvals filter

This commit is contained in:
amirrezaghabeli
2025-09-03 09:19:39 +03:30
parent 513475cfb6
commit 7b6f7d6dbd
4 changed files with 53 additions and 14 deletions
@@ -27,6 +27,16 @@ class YourTendersViewModel with ChangeNotifier {
? _fmt.format(selectedDateRange!.end)
: 'YYYY/MM/DD';
int get startDateUnix =>
selectedDateRange?.start != null
? selectedDateRange!.start.millisecondsSinceEpoch ~/ 1000
: 0;
int get endDateUnix =>
selectedDateRange?.end != null
? selectedDateRange!.end.millisecondsSinceEpoch ~/ 1000
: 0;
Future<void> getApprovedTenders() async {
isLoading = true;
notifyListeners();
@@ -86,4 +96,23 @@ class YourTendersViewModel with ChangeNotifier {
selectedStatus = status;
notifyListeners();
}
void clearFilter() {
selectedDateRange = null;
selectedStatus = 'All';
notifyListeners();
}
Future<void> callWithFilter() async {
if (selectedStatus == 'All') {
await getTenders(
limit: 10,
offset: 0,
createdFrom: startDateUnix.toString(),
createdTo: endDateUnix.toString(),
);
} else if (selectedStatus == 'Tenders submitted') {
await getApprovedTenders();
}
}
}
@@ -7,9 +7,29 @@ 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';
class YourTendersMobilePage extends StatelessWidget {
class YourTendersMobilePage extends StatefulWidget {
const YourTendersMobilePage({super.key});
@override
State<YourTendersMobilePage> createState() => _YourTendersMobilePageState();
}
class _YourTendersMobilePageState extends State<YourTendersMobilePage> {
late final YourTendersViewModel viewModel;
@override
void initState() {
viewModel = context.read<YourTendersViewModel>();
super.initState();
}
@override
void dispose() {
WidgetsBinding.instance.addPostFrameCallback((_) {
viewModel.clearFilter();
});
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
@@ -1,6 +1,7 @@
import 'package:country_flags/country_flags.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:tm_app/core/utils/date_utils.dart';
import '../../../core/constants/assets.dart';
import '../../../core/theme/colors.dart';
@@ -63,7 +64,7 @@ class TenderCard extends StatelessWidget {
children: [
// Date
Text(
date,
unixToDate(int.parse(date)),
style: TextStyle(
color: AppColors.grey60,
fontSize: 12.0.sp(),
@@ -162,18 +162,7 @@ class TendersFilterDialog extends StatelessWidget {
isEnabled: true,
onPressed: () {
context.pop();
if (vm.selectedStatus ==
YourTendersStrings.tendersSubmitted) {
vm.getApprovedTenders();
}
if (vm.selectedStatus == YourTendersStrings.all) {
vm.getTenders(
limit: 10,
offset: 0,
createdFrom: vm.startDateFormatted,
createdTo: vm.endDateFormatted,
);
}
vm.callWithFilter();
},
text: YourTendersStrings.confirm,
textColor: AppColors.mainBlue,