Fixed pagination tenders for desktop and
added new config for notification
This commit is contained in:
@@ -27,6 +27,31 @@ class _MainTendersSliderState extends State<MainTendersSlider> {
|
||||
final PageController pageController = PageController(initialPage: 0);
|
||||
int currentPage = 1;
|
||||
|
||||
ScrollController? _scrollController;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
if (widget.isDesktop) {
|
||||
_scrollController = ScrollController();
|
||||
_scrollController!.addListener(_onScroll);
|
||||
}
|
||||
}
|
||||
|
||||
void _onScroll() {
|
||||
if (!widget.isDesktop) {
|
||||
return;
|
||||
}
|
||||
final viewModel = context.read<TendersViewModel>();
|
||||
if (_scrollController!.position.pixels >=
|
||||
_scrollController!.position.maxScrollExtent - 200 &&
|
||||
viewModel.hasMoreData &&
|
||||
!viewModel.isLoadingMore) {
|
||||
viewModel.loadMoreTenders();
|
||||
}
|
||||
}
|
||||
|
||||
void _goToPreviousPage() {
|
||||
if (currentPage == 1) {
|
||||
return;
|
||||
@@ -88,6 +113,7 @@ class _MainTendersSliderState extends State<MainTendersSlider> {
|
||||
@override
|
||||
void dispose() {
|
||||
pageController.dispose();
|
||||
_scrollController?.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@@ -98,19 +124,6 @@ class _MainTendersSliderState extends State<MainTendersSlider> {
|
||||
return widget.isDesktop ? _tendersListView() : _tendersSlider(isLtr);
|
||||
}
|
||||
|
||||
Widget _tendersListView() {
|
||||
return ListView.separated(
|
||||
padding: EdgeInsets.all(16.0.h()),
|
||||
itemCount: widget.tenders.length,
|
||||
separatorBuilder:
|
||||
(_, __) => SizedBox(height: widget.isDesktop ? 0 : 16.0.h()),
|
||||
itemBuilder: (context, index) {
|
||||
final tender = widget.tenders[index];
|
||||
return TenderCard(tender: tender, isDesktop: widget.isDesktop);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Widget _tendersSlider(bool isLtr) {
|
||||
return Stack(
|
||||
children: [_tendersPageView(), _nextPreviousArrows(isLtr: isLtr)],
|
||||
@@ -251,4 +264,38 @@ class _MainTendersSliderState extends State<MainTendersSlider> {
|
||||
)
|
||||
: SizedBox(width: 32.0.h(), height: 32.0.h());
|
||||
}
|
||||
|
||||
Widget _tendersListView() {
|
||||
final viewModel = context.watch<TendersViewModel>();
|
||||
return Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child: ListView.separated(
|
||||
padding: EdgeInsets.all(16.0.h()),
|
||||
itemCount:
|
||||
widget.tenders.length +
|
||||
(widget.isDesktop && viewModel.isLoadingMore ? 1 : 0),
|
||||
separatorBuilder:
|
||||
(_, __) => SizedBox(height: widget.isDesktop ? 0 : 16.0.h()),
|
||||
itemBuilder: (context, index) {
|
||||
if (index < widget.tenders.length) {
|
||||
final tender = widget.tenders[index];
|
||||
return TenderCard(tender: tender, isDesktop: widget.isDesktop);
|
||||
} else {
|
||||
return const Padding(
|
||||
padding: EdgeInsets.all(16.0),
|
||||
child: Center(
|
||||
child: CircularProgressIndicator(
|
||||
strokeWidth: 2.0,
|
||||
color: AppColors.jellyBean,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user