Added logic to YourTenders

This commit is contained in:
llsajjad
2025-08-11 15:52:13 +03:30
parent 79ea6f7b83
commit d10e0459ae
25 changed files with 1958 additions and 838 deletions
@@ -1,10 +1,12 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:tm_app/core/constants/strings.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/views/shared/main_tab_bar.dart';
import 'package:tm_app/views/shared/tender_app_bar.dart';
import 'package:tm_app/views/your_tenders/widgets/approved_tenders.dart';
import 'package:tm_app/views/your_tenders/widgets/tenders_submitted.dart';
import 'package:tm_app/view_models/your_tenders_view_model.dart';
class YourTendersDesktopPage extends StatefulWidget {
const YourTendersDesktopPage({super.key});
@@ -21,6 +23,10 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
void initState() {
super.initState();
controller = TabController(length: 2, vsync: this);
WidgetsBinding.instance.addPostFrameCallback((_) {
context.read<YourTendersViewModel>().getTenders();
});
}
@override
@@ -50,7 +56,10 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
Expanded(
child: TabBarView(
controller: controller,
children: [ApprovedTenders(), TendersSubmitted()],
children: const [
ApprovedTenders(),
TendersSubmitted(),
],
),
),
],
@@ -1,6 +1,8 @@
import 'package:flutter/material.dart';
import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/views/your_tenders/model/tender_model.dart';
import 'package:provider/provider.dart';
import 'package:tm_app/core/constants/assets.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/view_models/your_tenders_view_model.dart';
import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
class ApprovedTenders extends StatelessWidget {
@@ -8,22 +10,61 @@ class ApprovedTenders extends StatelessWidget {
@override
Widget build(BuildContext context) {
final vm = Provider.of<YourTendersViewModel>(context);
if (vm.isLoading) {
return const Center(child: CircularProgressIndicator());
}
if (vm.errorMessage != null) {
return Center(child: Text(vm.errorMessage!));
}
final tenders = vm.data?.approvedTenders ?? [];
return ListView.builder(
padding: EdgeInsets.only(top: 20.0.h()),
itemCount: approvedTenders.length,
padding: const EdgeInsets.only(top: 20),
itemCount: tenders.length,
itemBuilder: (context, index) {
final tender = approvedTenders[index];
final t = tenders[index];
return TenderCard(
date: tender.date,
title: tender.title,
description: tender.description,
location: tender.location,
countryFlag: tender.countryFlag,
status: tender.status,
projectStatus: tender.projectStatus,
backgroundColor: tender.backgroundColor,
borderColor: tender.borderColor,
statusIcon: tender.statusIcon,
date: t.date,
title: t.title,
description: t.description,
location: t.location,
countryFlag: t.countryFlag,
status: t.status,
projectStatus: t.projectStatus,
backgroundColor:
t.status == 'Won'
? AppColors.gren0
: t.status == 'Completed'
? AppColors.white
: AppColors.red0.withValues(alpha: 0.2),
borderColor:
t.status == 'Won'
? AppColors.green10
: t.status == 'Completed'
? AppColors.cyanAqua
: AppColors.red0,
statusIcon:
t.status == 'Won'
? AssetsManager.tickCircle
: t.status == 'Completed'
? null
: AssetsManager.closeCircle,
statusCardColor:
t.status == 'Won'
? AppColors.green20
: t.status == 'Completed'
? AppColors.cyanAqua
: AppColors.red0,
statusTextColor:
t.status == 'Won'
? AppColors.gren30
: t.status == 'Completed'
? AppColors.cyanTeal
: AppColors.red10,
);
},
);
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:tm_app/core/constants/assets.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/views/your_tenders/model/tender_model.dart';
import 'package:tm_app/view_models/your_tenders_view_model.dart';
import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
class TendersSubmitted extends StatelessWidget {
@@ -10,34 +10,61 @@ class TendersSubmitted extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView.builder(
padding: EdgeInsets.only(top: 20.0.h()),
itemCount: tendersSubmitted.length,
itemBuilder: (context, index) {
final tender = tendersSubmitted[index];
return TenderCard(
date: tender.date,
title: tender.title,
description: tender.description,
location: tender.location,
countryFlag: tender.countryFlag,
status: tender.status,
projectStatus: tender.projectStatus,
final vm = Provider.of<YourTendersViewModel>(context);
if (vm.isLoading) {
return const Center(child: CircularProgressIndicator());
}
if (vm.errorMessage != null) {
return Center(child: Text(vm.errorMessage!));
}
final tenders = vm.data?.tendersSubmitted ?? [];
return ListView.builder(
padding: const EdgeInsets.only(top: 20),
itemCount: tenders.length,
itemBuilder: (context, index) {
final t = tenders[index];
return TenderCard(
date: t.date,
title: t.title,
description: t.description,
location: t.location,
countryFlag: t.countryFlag,
status: t.status,
projectStatus: t.projectStatus,
backgroundColor:
tender.status == 'Won'
t.status == 'Won'
? AppColors.gren0
: t.status == 'Completed'
? AppColors.white
: AppColors.red0.withValues(alpha: 0.2),
borderColor:
tender.status == 'Won' ? AppColors.green10 : AppColors.red0,
t.status == 'Won'
? AppColors.green10
: t.status == 'Completed'
? AppColors.cyanAqua
: AppColors.red0,
statusIcon:
tender.status == 'Won'
t.status == 'Won'
? AssetsManager.tickCircle
: t.status == 'Completed'
? null
: AssetsManager.closeCircle,
statusCardColor:
tender.status == 'Won' ? AppColors.green20 : AppColors.red0,
t.status == 'Won'
? AppColors.green20
: t.status == 'Completed'
? AppColors.cyanAqua
: AppColors.red0,
statusTextColor:
tender.status == 'Won' ? AppColors.gren30 : AppColors.red10,
t.status == 'Won'
? AppColors.gren30
: t.status == 'Completed'
? AppColors.cyanTeal
: AppColors.red10,
);
},
);