diff --git a/lib/views/tenders/widgets/main_tenders_slider.dart b/lib/views/tenders/widgets/main_tenders_slider.dart index 816207d..430d549 100644 --- a/lib/views/tenders/widgets/main_tenders_slider.dart +++ b/lib/views/tenders/widgets/main_tenders_slider.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; +import 'package:tm_app/core/constants/colors.dart'; import '../../../core/constants/assets.dart'; import '../../../core/utils/size_config.dart'; @@ -14,10 +15,11 @@ class MainTendersSlider extends StatefulWidget { } class _MainTendersSliderState extends State { - final PageController pageController = PageController(); + final PageController pageController = PageController(initialPage: 0); List likedTenders = []; List dislikedTenders = []; + int currentPage = 1; void _onDislike(Tender tender) { if (likedTenders.contains(tender)) { @@ -46,19 +48,35 @@ class _MainTendersSliderState extends State { } void _goToPreviousPage() { - pageController.animateToPage( - pageController.page!.toInt() - 1, + pageController.previousPage( duration: Duration(milliseconds: 300), curve: Curves.easeInOutCubic, ); + setState(() { + if (currentPage == 1) { + return; + } + currentPage = currentPage - 1; + }); } void _goToNextPage() { - pageController.animateToPage( - pageController.page!.toInt() + 1, + pageController.nextPage( duration: Duration(milliseconds: 300), curve: Curves.easeInOutCubic, ); + setState(() { + if (currentPage == sampleTenders.length) { + return; + } + currentPage = currentPage + 1; + }); + } + + @override + void dispose() { + pageController.dispose(); + super.dispose(); } @override @@ -67,11 +85,16 @@ class _MainTendersSliderState extends State { children: [ SizedBox( width: double.infinity, - height: 762.0.h(), + height: 693.0.h(), child: PageView.builder( controller: pageController, scrollDirection: Axis.horizontal, itemCount: sampleTenders.length, + onPageChanged: (index) { + setState(() { + currentPage = index + 1; + }); + }, itemBuilder: (context, index) { final tender = sampleTenders[index]; return TenderCard( @@ -92,8 +115,8 @@ class _MainTendersSliderState extends State { ), ), Positioned( - top: 237.0.h(), - bottom: 366.0.h(), + top: 607.0.h(), + bottom: 52.0.h(), left: 9.0.w(), right: 9.0.w(), child: Row( @@ -103,6 +126,14 @@ class _MainTendersSliderState extends State { onTap: _goToPreviousPage, child: SvgPicture.asset(AssetsManager.arrowCircleLeft), ), + Text( + '$currentPage/${sampleTenders.length}', + style: TextStyle( + fontSize: 14.0.sp(), + fontWeight: FontWeight.w500, + color: AppColors.grey, + ), + ), GestureDetector( onTap: _goToNextPage, child: SvgPicture.asset(AssetsManager.arrowCircleRight), diff --git a/lib/views/tenders/widgets/tender_action_buttons.dart b/lib/views/tenders/widgets/tender_action_buttons.dart index f739dba..fe18af8 100644 --- a/lib/views/tenders/widgets/tender_action_buttons.dart +++ b/lib/views/tenders/widgets/tender_action_buttons.dart @@ -32,6 +32,9 @@ class TenderActionButtons extends StatelessWidget { GestureDetector( onTap: onDislike, child: SvgPicture.asset( + width: 32.0.w(), + height: 32.0.w(), + fit: BoxFit.cover, AssetsManager.dislike, colorFilter: ColorFilter.mode( isDisliked ? AppColors.errorColor : AppColors.grey50, @@ -40,18 +43,14 @@ class TenderActionButtons extends StatelessWidget { ), ), - SizedBox(width: 16.0.w()), - - // Close button - GestureDetector( - onTap: onClose, - child: SvgPicture.asset(AssetsManager.closeCircle), - ), - SizedBox(width: 16.0.w()), + SizedBox(width: 48.0.w()), // Like button GestureDetector( onTap: onLike, child: SvgPicture.asset( + width: 32.0.w(), + height: 32.0.w(), + fit: BoxFit.cover, AssetsManager.like, colorFilter: ColorFilter.mode( isLiked ? AppColors.successColor : AppColors.grey50, diff --git a/lib/views/tenders/widgets/tender_card.dart b/lib/views/tenders/widgets/tender_card.dart index 5c018c1..514cd6c 100644 --- a/lib/views/tenders/widgets/tender_card.dart +++ b/lib/views/tenders/widgets/tender_card.dart @@ -23,7 +23,6 @@ class TenderCard extends StatelessWidget { final bool isDisliked; const TenderCard({ - super.key, required this.date, required this.deadline, required this.title, @@ -38,6 +37,7 @@ class TenderCard extends StatelessWidget { this.onClose, this.isLiked = false, this.isDisliked = false, + super.key, }); @override @@ -250,7 +250,7 @@ class TenderCard extends StatelessWidget { ], ), ), - SizedBox(height: 24.0.h()), + SizedBox(height: 72.0.h()), TenderActionButtons( isDisliked: isDisliked, isLiked: isLiked,