Changed in Buy a Pass View

This commit is contained in:
Vinayakkadge04
2025-10-27 19:13:01 +05:30
parent 69046649aa
commit 8edc5eec20
7 changed files with 86 additions and 54 deletions

View File

@@ -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,
),
],
),
);
},
),
),

View File

@@ -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(

View File

@@ -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<PaymentCard> {
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<PaymentCard> {
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<PaymentCard> {
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),
),
);
}

View File

@@ -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';

View File

@@ -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(

View File

@@ -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),
],