diff --git a/lib/buy_a_pass/view/buy_pass_view.dart b/lib/buy_a_pass/view/buy_pass_view.dart index 54cbc8d..99a5346 100644 --- a/lib/buy_a_pass/view/buy_pass_view.dart +++ b/lib/buy_a_pass/view/buy_pass_view.dart @@ -4,6 +4,7 @@ import 'package:citycards_customer/buy_a_pass/widget/pass_card_view.dart'; import 'package:citycards_customer/buy_a_pass/widget/payment_card_view.dart'; import 'package:citycards_customer/common_packages/app_bar.dart'; import 'package:citycards_customer/common_packages/custom_text.dart'; +import 'package:citycards_customer/core/route_constants.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -17,6 +18,19 @@ class BuyPassView extends StatelessWidget { {"image": "assets/images/aa4.png", "name": "Serenity Cove"}, ]; + final offers = [ + { + "image": "assets/images/aa1.png", + "title": "Astor Hotels Ultra Deluxe", + "description": "15% Discount on all treatments for first-time clients", + }, + { + "image": "assets/images/aa2.png", + "title": "Green Valley Spa Lux", + "description": "20% off on spa memberships and treatments", + }, + ]; + @override Widget build(BuildContext context) { return Scaffold( @@ -133,55 +147,68 @@ class BuyPassView extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - CustomText(text: "Card Benefits", size: 18.sp), - CustomText( - text: "View All", - size: 14.sp, - color: Color(0xFFFF5757), + CustomText(text: "Card Offers", size: 18.sp), + GestureDetector( + onTap: (){ + Navigator.pushNamed(context,RouteConstants.searchOffer); + }, + child: CustomText( + text: "View All", + size: 14.sp, + color: Color(0xFFFF5757), + ), ), ], ), ), SizedBox(height: 16.h), - Padding( - padding: const EdgeInsets.all(16.0), - child: SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Row( - children: const [ - OfferCard( - title: '50% OFF', - subtitle: 'on eSIM Data Plans', - tag: 'SPECIAL OFFER', - buttonText: 'Get Offer', - badgeText: 'NEW', - backgroundImage: 'assets/images/blue_card_bg.png', - tagIcon: "assets/icons/process_wifi.png", - themeColor: Color(0xFF4F46E5), - ), - SizedBox(width: 16), - OfferCard( - title: '60% OFF', - subtitle: 'Hotel Bookings', - tag: 'EXCLUSIVE DEAL', - buttonText: 'Book Now', - badgeText: 'Limited', - backgroundImage: 'assets/images/red_card_bg.png', - tagIcon: "assets/icons/exclusive.png", - themeColor: Color(0xFFFF5757), - ), - SizedBox(width: 16), - OfferCard( - title: 'Airport Transfer', - subtitle: 'With hotel booking', - tag: 'FREE PERK', - buttonText: 'Learn More', - backgroundImage: 'assets/images/green_card_bg.png', - tagIcon: "assets/icons/star.png", - opacity: 0.3, - ), - ], + Container( + height: 262.h, + padding: EdgeInsets.symmetric(horizontal: 20.w), + child: GridView.builder( + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 16.w, + childAspectRatio: 0.66, ), + itemCount: 2, + itemBuilder: (context, index) { + final offer = offers[index]; + return Container( + padding: EdgeInsets.symmetric( + horizontal: 6.w, + vertical: 6.h, + ), + decoration: BoxDecoration( + border: Border.all( + color: Color(0xFFF95F62).withOpacity(.24), + ), + borderRadius: BorderRadius.circular(12.sp), + ), + child: Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(8.sp), + child: Image.asset( + offer["image"] ?? "", + width: double.infinity, + height: 120.5.h, + fit: BoxFit.cover, + ), + ), + SizedBox(height: 8.h), + CustomText(text: offer["title"] ?? "", size: 18.sp), + SizedBox(height: 8.h), + CustomText( + text: offer["description"] ?? "", + color: Colors.black.withOpacity(.6), + size: 12.sp, + ), + ], + ), + ); + }, ), ), diff --git a/lib/buy_a_pass/widget/pass_card_view.dart b/lib/buy_a_pass/widget/pass_card_view.dart index 85e773b..4f9d5cb 100644 --- a/lib/buy_a_pass/widget/pass_card_view.dart +++ b/lib/buy_a_pass/widget/pass_card_view.dart @@ -23,7 +23,7 @@ class PassCardView extends StatelessWidget { return Container( decoration: BoxDecoration( color: Colors.white, - border: Border.all(color: themeColor ?? Color(0xFFF95FAF)), + border: Border.all(color:( themeColor ?? Color(0xFFF95FAF)).withOpacity(0.24)), borderRadius: BorderRadius.circular(8.r), ), child: Expanded( diff --git a/lib/buy_a_pass/widget/payment_card_view.dart b/lib/buy_a_pass/widget/payment_card_view.dart index 26e5980..05d5c1a 100644 --- a/lib/buy_a_pass/widget/payment_card_view.dart +++ b/lib/buy_a_pass/widget/payment_card_view.dart @@ -1,6 +1,7 @@ import 'package:citycards_customer/common_packages/custom_filled_button.dart'; import 'package:citycards_customer/core/route_constants.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; class PaymentCard extends StatefulWidget { final String city; @@ -139,7 +140,7 @@ class _PaymentCardState extends State { return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text(label, style: const TextStyle(fontSize: 15)), + Text(label, style: TextStyle(fontSize: 15.sp)), Row( children: [ _circleButton(Icons.remove, () { @@ -149,8 +150,8 @@ class _PaymentCardState extends State { padding: const EdgeInsets.symmetric(horizontal: 10), child: Text( "$value", - style: const TextStyle( - fontSize: 16, + style: TextStyle( + fontSize: 16.sp, fontWeight: FontWeight.bold, ), ), @@ -167,14 +168,14 @@ class _PaymentCardState extends State { Widget _circleButton(IconData icon, VoidCallback onTap) { return InkWell( onTap: onTap, - borderRadius: BorderRadius.circular(20), + borderRadius: BorderRadius.circular(20.r), child: Container( decoration: const BoxDecoration( shape: BoxShape.circle, color: Color(0xFFF95F62), ), padding: const EdgeInsets.all(4), - child: Icon(icon, color: Colors.white, size: 18), + child: Icon(icon, color: Colors.white, size: 18.sp), ), ); } diff --git a/lib/core/app_router.dart b/lib/core/app_router.dart index 5d5c985..b348948 100644 --- a/lib/core/app_router.dart +++ b/lib/core/app_router.dart @@ -14,9 +14,9 @@ import 'package:citycards_customer/itinerary_creation/bloc/itinerary_detail_bloc import 'package:citycards_customer/itinerary_creation/bloc/itinerary_steps_selection_bloc.dart'; import 'package:citycards_customer/itinerary_creation/views/itinerary_creation_start_view.dart'; import 'package:citycards_customer/itinerary_creation/views/itinerary_creation_view.dart'; -import 'package:citycards_customer/offer_section/bloc/search_offers_listing_bloc.dart'; -import 'package:citycards_customer/offer_section/view/search_offers_with_listing.dart'; import 'package:citycards_customer/privacy/privacy_view.dart'; +import 'package:citycards_customer/search_offers/bloc/search_offers_listing_bloc.dart'; +import 'package:citycards_customer/search_offers/view/search_offers_with_listing.dart'; import 'package:citycards_customer/terms_and_condition/terms_and_condition_view.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; diff --git a/lib/main.dart b/lib/main.dart index a012bbf..be24e47 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -29,7 +29,7 @@ class MyApp extends StatelessWidget { builder: (context, child) { return MaterialApp( onGenerateRoute: _appRouter.onGenerateRoute, - initialRoute: RouteConstants.checkout, + initialRoute: RouteConstants.buyPass, debugShowCheckedModeBanner: false, title: 'City Cards', theme: ThemeData( diff --git a/lib/offer_section/bloc/search_offers_listing_bloc.dart b/lib/search_offers/bloc/search_offers_listing_bloc.dart similarity index 100% rename from lib/offer_section/bloc/search_offers_listing_bloc.dart rename to lib/search_offers/bloc/search_offers_listing_bloc.dart diff --git a/lib/offer_section/view/search_offers_with_listing.dart b/lib/search_offers/view/search_offers_with_listing.dart similarity index 95% rename from lib/offer_section/view/search_offers_with_listing.dart rename to lib/search_offers/view/search_offers_with_listing.dart index 99cad29..f4d9ac0 100644 --- a/lib/offer_section/view/search_offers_with_listing.dart +++ b/lib/search_offers/view/search_offers_with_listing.dart @@ -1,7 +1,7 @@ import 'package:citycards_customer/common_packages/app_bar.dart'; import 'package:citycards_customer/common_packages/custom_search_field.dart'; import 'package:citycards_customer/common_packages/custom_text.dart'; -import 'package:citycards_customer/offer_section/bloc/search_offers_listing_bloc.dart'; +import 'package:citycards_customer/search_offers/bloc/search_offers_listing_bloc.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -25,7 +25,11 @@ class SearchOffersWithListing extends StatelessWidget { CommonAppBar(isWhiteLogo: false, isProfilePage: false,showCart: false,), Row( children: [ - Icon(Icons.arrow_back), + GestureDetector( + onTap: (){ + Navigator.pop(context); + }, + child: Icon(Icons.arrow_back)), SizedBox(width: 8.w), CustomText(text: "Offers with Flexi Card", size: 12.sp), ],