vinayak's pull merged

This commit is contained in:
2025-11-11 11:14:22 +05:30
parent 7d4c015134
commit 3caa52d9f8
33 changed files with 461 additions and 51 deletions

View File

@@ -10,6 +10,7 @@ import '../attractions/views/attractions_page_view.dart';
import '../buy_a_pass/view/buy_pass_view.dart';
import '../checkout/view/checkout_view.dart';
import '../create_account/create_account_view.dart';
import '../intro_screens/views/intro_screen_view.dart';
import '../itinerary_creation/bloc/itinerary_detail_bloc.dart';
import '../itinerary_creation/bloc/itinerary_steps_selection_bloc.dart';
import '../itinerary_creation/views/itinerary_creation_view.dart';
@@ -39,6 +40,11 @@ Widget buildOffstageNavigator(
case '/':
return MaterialPageRoute(builder: (_) => child);
case RouteConstants.intro:
return MaterialPageRoute(builder: (_){
return IntroScreensView();
});
// 🔹 Attractions Page
case RouteConstants.attractionsPage:
final args = settings.arguments as String;

View File

@@ -1,7 +1,7 @@
class RouteConstants {
static const String intro = 'intro';
static const String intro = '/intro';
/****************************** HOME SECTION ************************************/

View File

@@ -1,15 +1,17 @@
import 'package:citycards_customer/home/widgets/e_sim_offer_section.dart';
import 'package:citycards_customer/home/widgets/hotel_offers_section.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:google_fonts/google_fonts.dart';
import '../../common_bloc/bottom_navigation_bloc.dart';
import '../../common_packages/app_bar.dart';
import '../../core/route_constants.dart';
import '../widgets/attractions_list.dart';
import '../widgets/get_your_pass_card.dart';
import '../widgets/gradient_container_bg.dart';
import '../widgets/journey_cards_listview.dart';
import '../widgets/itineary_animation.dart';
import '../widgets/pass_card_list.dart';
class RegisteredUserHomePage extends StatefulWidget {
@@ -51,7 +53,7 @@ class _RegisteredUserHomePageState extends State<RegisteredUserHomePage> {
children: [
Image.asset(
"assets/images/chicago.png",
height: 300,
height: 300.h,
width: double.infinity,
fit: BoxFit.cover,
),
@@ -69,7 +71,7 @@ class _RegisteredUserHomePageState extends State<RegisteredUserHomePage> {
isProfilePage: false,
showDivider: false,
),
SizedBox(height: 70.h),
SizedBox(height: 60.h),
Text(
"Melbourne",
style: TextStyle(
@@ -78,7 +80,7 @@ class _RegisteredUserHomePageState extends State<RegisteredUserHomePage> {
fontSize: 44,
),
),
const SizedBox(height: 4),
SizedBox(height: 4.h),
Text(
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
"Cras posuere, nisl id dictum consequat, elit enim tincidunt magna...",
@@ -88,7 +90,7 @@ class _RegisteredUserHomePageState extends State<RegisteredUserHomePage> {
fontWeight: FontWeight.w400,
),
),
const SizedBox(height: 12),
SizedBox(height: 12.h),
// Category tags
Wrap(
@@ -101,7 +103,7 @@ class _RegisteredUserHomePageState extends State<RegisteredUserHomePage> {
],
),
const SizedBox(height: 40),
SizedBox(height: 60.h),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -152,9 +154,53 @@ class _RegisteredUserHomePageState extends State<RegisteredUserHomePage> {
),
),
InwardCurvedContainer(
child: Stack(children: [DreamJourneySection()]),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(height: 40.h),
const ItineraryVideo(),
SizedBox(height: 20.h),
// 🔘 Button section
Container(
margin: const EdgeInsets.symmetric(horizontal: 16),
child: SizedBox(
width: 200,
child: ElevatedButton(
onPressed: () {
context.read<NavigationBloc>().add(NavigationTabChanged(1));
// Navigator.of(
// context,
// ).pushNamed(RouteConstants.buyPass);
},
style: ElevatedButton.styleFrom(
backgroundColor: const Color(0xffF95F62),
padding: const EdgeInsets.symmetric(vertical: 14),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(30),
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Create my iternary",
style: GoogleFonts.poppins(
fontWeight: FontWeight.w500,
fontSize: 14.sp,
color: Colors.white,
),
),
const SizedBox(width: 4),
Icon(Icons.arrow_forward, color: Colors.white),
],
),
),
),
),
],
),
),
const SizedBox(height: 10),
ESimOfferSection(),
HotelOffersSection(),
const SizedBox(height: 10),
@@ -167,7 +213,9 @@ class _RegisteredUserHomePageState extends State<RegisteredUserHomePage> {
children: [
InkWell(
onTap: () {
Navigator.of(context).pushNamed(RouteConstants.searchOffer);
Navigator.of(
context,
).pushNamed(RouteConstants.searchOffer);
},
child: _buildFeatureCard(
image: "assets/images/claim_offers_bg.jpg",
@@ -199,7 +247,7 @@ class _RegisteredUserHomePageState extends State<RegisteredUserHomePage> {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
decoration: BoxDecoration(
color: Color(0xffF95F62),
color: Color(0xffFFFFFF).withOpacity(0.29),
borderRadius: BorderRadius.circular(20),
),
child: Text(

View File

@@ -45,7 +45,7 @@ class _AttractionsListViewState extends State<AttractionsListView> {
child: ListView.builder(
controller: _scrollController,
scrollDirection: Axis.horizontal,
padding: const EdgeInsets.only(left: 16),
padding: const EdgeInsets.only(right: 16),
itemCount: widget.attractions.length,
itemBuilder: (context, index) {
final item = widget.attractions[index];

View File

@@ -9,7 +9,7 @@ class ESimOfferSection extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 10),
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 0),
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),

View File

@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
class InwardCurvedContainer extends StatelessWidget {
final Widget child;
@@ -10,14 +11,14 @@ class InwardCurvedContainer extends StatelessWidget {
clipper: InwardAndBottomConvexClipper(),
child: Container(
width: double.infinity,
height: 700,
height: 450.h,
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
Color(0xFFFFF5F5),
Color(0xFFFDCDCE),
Color(0xFFFEF5F8),
Color(0xFFFFF5F5),
],
),

View File

@@ -0,0 +1,44 @@
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
class ItineraryVideo extends StatefulWidget {
const ItineraryVideo({super.key});
@override
State<ItineraryVideo> createState() => _ItineraryVideoState();
}
class _ItineraryVideoState extends State<ItineraryVideo> {
late VideoPlayerController _controller;
@override
void initState() {
super.initState();
_controller = VideoPlayerController.asset(
'assets/gif/itinenary_animation_for_citycards.mp4',
)
..initialize().then((_) {
_controller.setLooping(true);
_controller.play();
setState(() {});
});
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Center(
child: _controller.value.isInitialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: const CircularProgressIndicator(),
);
}
}

View File

@@ -30,7 +30,7 @@ class YourItineraryView extends StatelessWidget {
children: [
Image.asset(
"assets/images/trump_house.png",
height: 155.h,
height: 165.h,
width: double.infinity,
fit: BoxFit.cover,
alignment: Alignment.topCenter,
@@ -45,12 +45,7 @@ class YourItineraryView extends StatelessWidget {
child: Column(
children: [
CommonAppBar(isWhiteLogo: true, isProfilePage: false, showDivider: true,),
SizedBox(height: 5.h),
Divider(
height: 0.4.h,
color: Colors.white.withOpacity(.3),
),
SizedBox(height: 26.h),
SizedBox(height: 10.h),
Row(
children: [
GestureDetector(
@@ -68,7 +63,7 @@ class YourItineraryView extends StatelessWidget {
"Melbourne Itinerary",
style: TextStyle(
fontSize: 16.sp,
fontWeight: FontWeight.w500,
fontWeight: FontWeight.w700,
color: Colors.white,
),
),