fixed your tenders dark colors and some logic changed

This commit is contained in:
amirrezaghabeli
2025-08-13 11:11:29 +03:30
parent d80ee195b5
commit 1f2dbb21da
8 changed files with 181 additions and 109 deletions
@@ -2,11 +2,11 @@ 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/view_models/your_tenders_view_model.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});
@@ -54,12 +54,34 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
],
),
Expanded(
child: TabBarView(
controller: controller,
children: const [
ApprovedTenders(),
TendersSubmitted(),
],
child: Consumer<YourTendersViewModel>(
builder: (context, viewModel, child) {
if (viewModel.isLoading) {
return const Center(
child: CircularProgressIndicator(
color: AppColors.secondary50,
),
);
}
if (viewModel.errorMessage != null) {
return Center(child: Text(viewModel.errorMessage!));
}
return TabBarView(
controller: controller,
children: [
ApprovedTenders(
approvedTenders:
viewModel.data?.approvedTenders ?? [],
),
TendersSubmitted(
tendersSubmitted:
viewModel.data?.tendersSubmitted ?? [],
),
],
);
},
),
),
],
@@ -47,9 +47,32 @@ class _YourTendersMobilePageState extends State<YourTendersMobilePage>
titles: [AppStrings.approvedTenders, AppStrings.tenderSubmitted],
),
Expanded(
child: TabBarView(
controller: controller,
children: const [ApprovedTenders(), TendersSubmitted()],
child: Consumer<YourTendersViewModel>(
builder: (context, viewModel, child) {
if (viewModel.isLoading) {
return const Center(
child: CircularProgressIndicator(
color: AppColors.secondary50,
),
);
}
if (viewModel.errorMessage != null) {
return Center(child: Text(viewModel.errorMessage!));
}
return TabBarView(
controller: controller,
children: [
ApprovedTenders(
approvedTenders: viewModel.data?.approvedTenders ?? [],
),
TendersSubmitted(
tendersSubmitted: viewModel.data?.tendersSubmitted ?? [],
),
],
);
},
),
),
],
@@ -2,11 +2,11 @@ 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/view_models/your_tenders_view_model.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 YourTendersTabletPage extends StatefulWidget {
const YourTendersTabletPage({super.key});
@@ -48,12 +48,40 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
children: [
MainTabBar(
controller: controller,
titles: [AppStrings.approvedTenders, AppStrings.tenderSubmitted],
titles: [
AppStrings.approvedTenders,
AppStrings.tenderSubmitted,
],
),
Expanded(
child: TabBarView(
controller: controller,
children: const [ApprovedTenders(), TendersSubmitted()],
child: Consumer<YourTendersViewModel>(
builder: (context, viewModel, child) {
if (viewModel.isLoading) {
return const Center(
child: CircularProgressIndicator(
color: AppColors.secondary50,
),
);
}
if (viewModel.errorMessage != null) {
return Center(child: Text(viewModel.errorMessage!));
}
return TabBarView(
controller: controller,
children: [
ApprovedTenders(
approvedTenders:
viewModel.data?.approvedTenders ?? [],
),
TendersSubmitted(
tendersSubmitted:
viewModel.data?.tendersSubmitted ?? [],
),
],
);
},
),
),
],
@@ -63,4 +91,4 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
),
);
}
}
}
@@ -1,69 +1,59 @@
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/view_models/your_tenders_view_model.dart';
import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
import '../../../data/services/model/your_tender_model/your_tender_model.dart';
class ApprovedTenders extends StatelessWidget {
const ApprovedTenders({super.key});
const ApprovedTenders({required this.approvedTenders, super.key});
final List<YourTenderModel> approvedTenders;
@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: const EdgeInsets.only(top: 20),
itemCount: tenders.length,
itemCount: approvedTenders.length,
itemBuilder: (context, index) {
final t = tenders[index];
final tender = approvedTenders[index];
return TenderCard(
date: t.date,
title: t.title,
description: t.description,
location: t.location,
countryFlag: t.countryFlag,
status: t.status,
projectStatus: t.projectStatus,
date: tender.date,
title: tender.title,
description: tender.description,
location: tender.location,
countryFlag: tender.countryFlag,
status: tender.status,
projectStatus: tender.projectStatus,
backgroundColor:
t.status == 'Won'
? AppColors.gren0
: t.status == 'Completed'
tender.status == 'Won'
? AppColors.green0
: tender.status == 'Completed'
? AppColors.grey0
: AppColors.red0.withValues(alpha: 0.2),
borderColor:
t.status == 'Won'
tender.status == 'Won'
? AppColors.green10
: t.status == 'Completed'
: tender.status == 'Completed'
? AppColors.grey30
: AppColors.red0,
statusIcon:
t.status == 'Won'
tender.status == 'Won'
? AssetsManager.tickCircle
: t.status == 'Completed'
: tender.status == 'Completed'
? null
: AssetsManager.closeCircle,
statusCardColor:
t.status == 'Won'
tender.status == 'Won'
? AppColors.green20
: tender.status == 'Completed'
? AppColors.green20
: t.status == 'Completed'
? AppColors.cyanAqua
: AppColors.red0,
statusTextColor:
t.status == 'Won'
? AppColors.gren30
: t.status == 'Completed'
? AppColors.cyanTeal
tender.status == 'Won'
? AppColors.green30
: tender.status == 'Completed'
? AppColors.green30
: AppColors.red10,
);
},
@@ -84,12 +84,16 @@ class TenderCard extends StatelessWidget {
statusIcon!,
width: 16.0.w(),
height: 16.0.h(),
colorFilter: ColorFilter.mode(
statusTextColor ?? AppColors.green30,
BlendMode.srcIn,
),
),
SizedBox(width: 4.0.w()),
Text(
status,
style: TextStyle(
color: statusTextColor ?? AppColors.gren30,
color: statusTextColor ?? AppColors.green30,
fontSize: 12.0.sp(),
fontWeight: FontWeight.w500,
),
@@ -1,70 +1,59 @@
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/view_models/your_tenders_view_model.dart';
import 'package:tm_app/data/services/model/your_tender_model/your_tender_model.dart';
import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
class TendersSubmitted extends StatelessWidget {
const TendersSubmitted({super.key});
const TendersSubmitted({required this.tendersSubmitted, super.key});
final List<YourTenderModel> tendersSubmitted;
@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?.tendersSubmitted ?? [];
return ListView.builder(
padding: const EdgeInsets.only(top: 20),
itemCount: tenders.length,
itemCount: tendersSubmitted.length,
itemBuilder: (context, index) {
final t = tenders[index];
final tender = tendersSubmitted[index];
return TenderCard(
date: t.date,
title: t.title,
description: t.description,
location: t.location,
countryFlag: t.countryFlag,
status: t.status,
projectStatus: t.projectStatus,
date: tender.date,
title: tender.title,
description: tender.description,
location: tender.location,
countryFlag: tender.countryFlag,
status: tender.status,
projectStatus: tender.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
tender.status == 'Won'
? AppColors.green0
: tender.status == 'Completed'
? AppColors.grey0
: AppColors.red0,
borderColor:
tender.status == 'Won'
? AppColors.green10
: tender.status == 'Completed'
? AppColors.grey30
: AppColors.red10,
statusIcon:
t.status == 'Won'
tender.status == 'Won'
? AssetsManager.tickCircle
: t.status == 'Completed'
: tender.status == 'Completed'
? null
: AssetsManager.closeCircle,
statusCardColor:
t.status == 'Won'
tender.status == 'Won'
? AppColors.green20
: t.status == 'Completed'
? AppColors.cyanAqua
: AppColors.red0,
statusTextColor:
t.status == 'Won'
? AppColors.gren30
: t.status == 'Completed'
? AppColors.cyanTeal
: tender.status == 'Completed'
? AppColors.blue0
: AppColors.red10,
statusTextColor:
tender.status == 'Won'
? AppColors.green30
: tender.status == 'Completed'
? AppColors.cyanTeal
: AppColors.red20,
);
},
);