filters in your tenders fixed
This commit is contained in:
@@ -2,7 +2,9 @@ import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.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/strings/your_tenders_strings.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/filter_button.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/liked_disliked_tenders_list.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/tablet_desktop_appbar.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/tenders_submitted.dart';
|
||||
|
||||
@@ -24,10 +26,6 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
|
||||
void initState() {
|
||||
super.initState();
|
||||
controller = TabController(length: 2, vsync: this);
|
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
context.read<YourTendersViewModel>().getApprovedTenders();
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -94,9 +92,28 @@ class _YourTendersDesktopPageState extends State<YourTendersDesktopPage>
|
||||
if (viewModel.errorMessage != null) {
|
||||
return Center(child: Text(viewModel.errorMessage!));
|
||||
}
|
||||
return TendersSubmitted(
|
||||
approvedTenders: viewModel.data!,
|
||||
);
|
||||
|
||||
if (viewModel.selectedStatus ==
|
||||
YourTendersStrings.likeTenders &&
|
||||
viewModel.likedTendersData != null) {
|
||||
return LikedDislikedTendersList(
|
||||
data: viewModel.likedTendersData!,
|
||||
status: 'liked',
|
||||
);
|
||||
} else if (viewModel.selectedStatus ==
|
||||
YourTendersStrings.dislikeTenders &&
|
||||
viewModel.likedTendersData != null) {
|
||||
return LikedDislikedTendersList(
|
||||
data: viewModel.likedTendersData!,
|
||||
status: 'disliked',
|
||||
);
|
||||
} else if (viewModel.data != null) {
|
||||
return TendersSubmitted(
|
||||
approvedTenders: viewModel.data!,
|
||||
);
|
||||
} else {
|
||||
return const Center(child: Text('No data available'));
|
||||
}
|
||||
// return TabBarView(
|
||||
// controller: controller,
|
||||
// children: [
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:tm_app/view_models/your_tenders_view_model.dart';
|
||||
import 'package:tm_app/views/shared/tender_app_bar.dart';
|
||||
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/liked_disliked_tenders_list.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/tenders_submitted.dart';
|
||||
|
||||
class YourTendersMobilePage extends StatefulWidget {
|
||||
@@ -55,10 +56,34 @@ class _YourTendersMobilePageState extends State<YourTendersMobilePage> {
|
||||
|
||||
return Column(
|
||||
children: [
|
||||
// Expanded(child: ApprovedTenders(tendersSubmitted: [])),
|
||||
Expanded(
|
||||
child: TendersSubmitted(approvedTenders: viewModel.data!),
|
||||
),
|
||||
if (viewModel.selectedStatus ==
|
||||
YourTendersStrings.likeTenders &&
|
||||
viewModel.likedTendersData != null)
|
||||
Expanded(
|
||||
child: LikedDislikedTendersList(
|
||||
data: viewModel.likedTendersData!,
|
||||
status: 'liked tenders',
|
||||
),
|
||||
)
|
||||
else if (viewModel.selectedStatus ==
|
||||
YourTendersStrings.dislikeTenders &&
|
||||
viewModel.likedTendersData != null)
|
||||
Expanded(
|
||||
child: LikedDislikedTendersList(
|
||||
data: viewModel.likedTendersData!,
|
||||
status: 'disliked',
|
||||
),
|
||||
)
|
||||
else if (viewModel.data != null)
|
||||
Expanded(
|
||||
child: TendersSubmitted(
|
||||
approvedTenders: viewModel.data!,
|
||||
),
|
||||
)
|
||||
else
|
||||
const Expanded(
|
||||
child: Center(child: Text('No data available')),
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
|
||||
@@ -6,6 +6,7 @@ import 'package:tm_app/core/theme/colors.dart';
|
||||
import 'package:tm_app/core/utils/size_config.dart';
|
||||
import 'package:tm_app/view_models/your_tenders_view_model.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/filter_button.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/liked_disliked_tenders_list.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/tablet_desktop_appbar.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/tenders_submitted.dart';
|
||||
|
||||
@@ -28,10 +29,6 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
|
||||
void initState() {
|
||||
super.initState();
|
||||
controller = TabController(length: 2, vsync: this);
|
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
context.read<YourTendersViewModel>().getApprovedTenders();
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -46,10 +43,7 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
|
||||
return Scaffold(
|
||||
key: key,
|
||||
backgroundColor: AppColors.backgroundColor,
|
||||
appBar: tabletAppBar(
|
||||
title: YourTendersStrings.yourTenders,
|
||||
key: key,
|
||||
),
|
||||
appBar: tabletAppBar(title: YourTendersStrings.yourTenders, key: key),
|
||||
drawer: TabletNavigationWidget(
|
||||
currentIndex: 1, // Home is index 0
|
||||
onTabChanged: (index) {
|
||||
@@ -102,7 +96,26 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
|
||||
if (viewModel.errorMessage != null) {
|
||||
return Center(child: Text(viewModel.errorMessage!));
|
||||
}
|
||||
return TendersSubmitted(approvedTenders: viewModel.data!);
|
||||
|
||||
if (viewModel.selectedStatus ==
|
||||
YourTendersStrings.likeTenders &&
|
||||
viewModel.likedTendersData != null) {
|
||||
return LikedDislikedTendersList(
|
||||
data: viewModel.likedTendersData!,
|
||||
status: 'liked',
|
||||
);
|
||||
} else if (viewModel.selectedStatus ==
|
||||
YourTendersStrings.dislikeTenders &&
|
||||
viewModel.likedTendersData != null) {
|
||||
return LikedDislikedTendersList(
|
||||
data: viewModel.likedTendersData!,
|
||||
status: 'disliked',
|
||||
);
|
||||
} else if (viewModel.data != null) {
|
||||
return TendersSubmitted(approvedTenders: viewModel.data!);
|
||||
} else {
|
||||
return const Center(child: Text('No data available'));
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
import 'package:tm_app/core/utils/size_config.dart';
|
||||
import 'package:tm_app/data/services/model/liked_tenders_response/liked_tenders_response.dart';
|
||||
import 'package:tm_app/view_models/your_tenders_view_model.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
|
||||
|
||||
class LikedDislikedTendersList extends StatefulWidget {
|
||||
final LikedTendersResponse data;
|
||||
final String status;
|
||||
|
||||
const LikedDislikedTendersList({
|
||||
required this.data,
|
||||
required this.status,
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
State<LikedDislikedTendersList> createState() =>
|
||||
_LikedDislikedTendersListState();
|
||||
}
|
||||
|
||||
class _LikedDislikedTendersListState extends State<LikedDislikedTendersList> {
|
||||
final ScrollController _controller = ScrollController();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_controller.addListener(_onScroll);
|
||||
}
|
||||
|
||||
void _onScroll() {
|
||||
final vm = context.read<YourTendersViewModel>();
|
||||
if (_controller.position.pixels >=
|
||||
_controller.position.maxScrollExtent - 200) {
|
||||
vm.loadMoreFeedback();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_controller.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final vm = context.watch<YourTendersViewModel>();
|
||||
final data = widget.data;
|
||||
|
||||
if (data.data?.feedback == null || data.data!.feedback!.isEmpty) {
|
||||
return Center(
|
||||
child: Text(
|
||||
'No ${widget.status} found',
|
||||
style: TextStyle(fontSize: 16.0.sp(), color: AppColors.grey70),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
final items = data.data!.feedback!;
|
||||
final itemCount = items.length + (vm.isLoadingMore ? 1 : 0);
|
||||
|
||||
return ListView.builder(
|
||||
controller: _controller,
|
||||
itemCount: itemCount,
|
||||
itemBuilder: (context, index) {
|
||||
if (index >= items.length) {
|
||||
return Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 16.0.h()),
|
||||
child: const Center(
|
||||
child: CircularProgressIndicator(color: AppColors.secondary50),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
final feedback = items[index];
|
||||
return Padding(
|
||||
padding: EdgeInsets.only(bottom: 16.0.h()),
|
||||
child: TenderCard(
|
||||
date: feedback.tender!.publicationDate?.toString() ?? '',
|
||||
title: feedback.tender!.title ?? '',
|
||||
description: feedback.tender!.description ?? '',
|
||||
location: feedback.tender!.countryCode ?? '',
|
||||
countryCode: feedback.tender!.countryCode ?? '',
|
||||
status: feedback.tender!.status ?? '',
|
||||
projectStatus: feedback.tender!.procurementTypeCode!,
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user