Commits (2)
This image diff could not be displayed because it is too large. You can view the blob instead.
...@@ -271,6 +271,7 @@ class HelpAndEnquiryProvider extends ChangeNotifier { ...@@ -271,6 +271,7 @@ class HelpAndEnquiryProvider extends ChangeNotifier {
orderId, orderId,
otherReason, otherReason,
images, images,
); );
// Check if widget is still mounted before showing dialogs // Check if widget is still mounted before showing dialogs
...@@ -282,10 +283,7 @@ class HelpAndEnquiryProvider extends ChangeNotifier { ...@@ -282,10 +283,7 @@ class HelpAndEnquiryProvider extends ChangeNotifier {
); );
//Navigator.pop(context); // close bottom sheet or dialog if open //Navigator.pop(context); // close bottom sheet or dialog if open
if (context.mounted) { if (context.mounted) {
Navigator.push( Navigator.pop(context);
context,
MaterialPageRoute(builder: (context) => HelpScreen(sessionId: sessionId, accId: accId))
);
} }
} else { } else {
......
...@@ -257,33 +257,33 @@ class _BillDetailScreenState extends State<BillDetailScreen> { ...@@ -257,33 +257,33 @@ class _BillDetailScreenState extends State<BillDetailScreen> {
child: Row( child: Row(
children: [ children: [
// Pay Now Button (only if not paid) // Pay Now Button (only if not paid)
if (!isPaid) ...[ // if (!isPaid) ...[
Expanded( // Expanded(
child: ElevatedButton( // child: ElevatedButton(
onPressed: () { // onPressed: () {
_showPayNowDialog(screenWidth, screenHeight); // _showPayNowDialog(screenWidth, screenHeight);
}, // },
style: ElevatedButton.styleFrom( // style: ElevatedButton.styleFrom(
backgroundColor: AppColors.buttonColor, // backgroundColor: AppColors.buttonColor,
foregroundColor: Colors.white, // foregroundColor: Colors.white,
shape: RoundedRectangleBorder( // shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(screenWidth * 0.03), // borderRadius: BorderRadius.circular(screenWidth * 0.03),
), // ),
padding: EdgeInsets.symmetric(vertical: screenHeight * 0.018), // padding: EdgeInsets.symmetric(vertical: screenHeight * 0.018),
elevation: 0, // elevation: 0,
), // ),
child: Text( // child: Text(
"Pay Now", // "Pay Now",
style: TextStyle( // style: TextStyle(
fontSize: getResponsiveTextSize(context, 14), // fontSize: getResponsiveTextSize(context, 14),
fontFamily: "Poppins", // fontFamily: "Poppins",
fontWeight: FontWeight.w600, // fontWeight: FontWeight.w600,
), // ),
), // ),
), // ),
), // ),
SizedBox(width: screenWidth * 0.03), // SizedBox(width: screenWidth * 0.03),
], // ],
// Download Receipt Button // Download Receipt Button
Expanded( Expanded(
...@@ -315,7 +315,7 @@ class _BillDetailScreenState extends State<BillDetailScreen> { ...@@ -315,7 +315,7 @@ class _BillDetailScreenState extends State<BillDetailScreen> {
label: Text( label: Text(
provider.isDownloading provider.isDownloading
? "Downloading..." ? "Downloading..."
: "Download Receipt", : "Download Bill",
style: TextStyle( style: TextStyle(
fontSize: getResponsiveTextSize(context, 14), fontSize: getResponsiveTextSize(context, 14),
fontFamily: "Plus Jakarta Sans", fontFamily: "Plus Jakarta Sans",
......
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:gen_rentals/Screens/HelpScreens/EnquiryScreen.dart'; import 'package:gen_rentals/Screens/HelpScreens/EnquiryScreen.dart';
import 'package:gen_rentals/Screens/HelpScreens/HelpScreen.dart'; import 'package:gen_rentals/Screens/HelpScreens/HelpScreen.dart';
...@@ -48,7 +51,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb ...@@ -48,7 +51,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
} }
} }
// Handle back button press // Handle back button press
Future<bool> _onWillPop() async { Future<bool> _onWillPop() async {
DateTime now = DateTime.now(); DateTime now = DateTime.now();
if (currentBackPressTime == null || if (currentBackPressTime == null ||
...@@ -61,9 +64,12 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb ...@@ -61,9 +64,12 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
); );
return false; return false;
} }
return true;
// Close the entire app immediately
exit(0);
} }
// Responsive text size function // Responsive text size function
double getResponsiveTextSize(BuildContext context, double baseSize) { double getResponsiveTextSize(BuildContext context, double baseSize) {
final double width = MediaQuery.of(context).size.width; final double width = MediaQuery.of(context).size.width;
...@@ -212,7 +218,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb ...@@ -212,7 +218,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
// Header with profile // Header with profile
Container( Container(
width: double.infinity, width: double.infinity,
height: screenHeight * 0.55, height: screenHeight * 0.51,
decoration: const BoxDecoration( decoration: const BoxDecoration(
gradient: LinearGradient( gradient: LinearGradient(
begin: Alignment.topCenter, begin: Alignment.topCenter,
...@@ -228,7 +234,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb ...@@ -228,7 +234,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
), ),
child: Column( child: Column(
children: [ children: [
SizedBox(height: screenHeight * 0.06), SizedBox(height: screenHeight * 0.09),
Row( Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: [ children: [
...@@ -260,10 +266,11 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb ...@@ -260,10 +266,11 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Image.asset( Image.asset(
'assets/images/gene_png.png', 'assets/images/dashboard_gen.png',
height: screenHeight * 0.25, height: screenHeight * 0.25,
width: screenWidth * 0.6, width: screenWidth * 0.6,
), ),
SizedBox(height: 5,),
Text( Text(
"Welcome!", "Welcome!",
style: TextStyle( style: TextStyle(
...@@ -288,8 +295,6 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb ...@@ -288,8 +295,6 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
), ),
), ),
SizedBox(height: screenHeight * 0.01),
// Main content section // Main content section
Container( Container(
padding: EdgeInsets.symmetric(horizontal: getResponsivePadding(context)), padding: EdgeInsets.symmetric(horizontal: getResponsivePadding(context)),
...@@ -387,7 +392,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb ...@@ -387,7 +392,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
// Subscribed Orders // Subscribed Orders
Container( Container(
width: double.infinity, width: double.infinity,
padding: EdgeInsets.symmetric(horizontal: screenWidth * 0.005, vertical: screenHeight * 0.012), padding: EdgeInsets.symmetric(horizontal: screenWidth * 0.0009, vertical: screenHeight * 0.012),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
...@@ -896,25 +901,26 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb ...@@ -896,25 +901,26 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
bottomRight: Radius.circular(screenWidth * 0.05), bottomRight: Radius.circular(screenWidth * 0.05),
), ),
), ),
child: Row( child: Center(
children: [ child: Row(
SizedBox(width: screenWidth * 0.03), children: [
Icon(Icons.info_outline, color: Colors.red, size: getResponsiveIconSize(context, 15)), SizedBox(width: screenWidth * 0.02),
SizedBox(width: screenWidth * 0.01), Icon(Icons.info_outline, color: Colors.red, size: getResponsiveIconSize(context, 15)),
Expanded( SizedBox(width: screenWidth * 0.01),
child: Text( Expanded(
product.pendingPaymentText ?? child: Text(
"Payment Pending. Please Pay before incurring fines.", product.pendingPaymentText ??
style: TextStyle( "Payment Pending. Please Pay before incurring fines.",
fontFamily: "Poppins", style: TextStyle(
color: Colors.red, fontFamily: "Poppins",
fontSize: getResponsiveTextSize(context, 11), color: Colors.black87,
fontWeight: FontWeight.w400, fontSize: getResponsiveTextSize(context, 10),
fontWeight: FontWeight.w400,
),
), ),
), ),
), ],
SizedBox(width: screenWidth * 0.03), ),
],
), ),
), ),
], ],
...@@ -952,7 +958,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb ...@@ -952,7 +958,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
width: getResponsiveIconSize(context, 40), width: getResponsiveIconSize(context, 40),
fit: BoxFit.contain, fit: BoxFit.contain,
errorBuilder: (context, error, stack) => errorBuilder: (context, error, stack) =>
Image.asset('assets/images/gene_png.png', Image.asset('assets/images/dashboard_gen.png',
height: getResponsiveIconSize(context, 40), height: getResponsiveIconSize(context, 40),
width: getResponsiveIconSize(context, 40)), width: getResponsiveIconSize(context, 40)),
), ),
...@@ -985,7 +991,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb ...@@ -985,7 +991,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
], ],
), ),
// Gradient expiry badge // Gradient expiry badge
if (product.expiringText != null && product.expiringText!.isNotEmpty) if (product.expiringText != null && product.expiringText!.isNotEmpty)
Container( Container(
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
...@@ -1038,7 +1044,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb ...@@ -1038,7 +1044,7 @@ class _DashboardScreenState extends State<DashboardScreen> with WidgetsBindingOb
"• ", "• ",
style: TextStyle( style: TextStyle(
color: Colors.black, color: Colors.black,
fontSize: getResponsiveTextSize(context, 16) fontSize: getResponsiveTextSize(context, 14)
), ),
), ),
Expanded( Expanded(
......
This diff is collapsed.
...@@ -135,17 +135,28 @@ class _HelpScreenState extends State<HelpScreen> { ...@@ -135,17 +135,28 @@ class _HelpScreenState extends State<HelpScreen> {
_buildCreateNewTicketSection(), _buildCreateNewTicketSection(),
const SizedBox(height: 12), const SizedBox(height: 12),
if (closedTickets.isEmpty && processingTickets.isEmpty)
Center(
child: SectionHeading(
title: 'No issues have been raised yet.',
textStyle: TextStyle(fontSize: 14, fontWeight: FontWeight.w500),
padding: EdgeInsets.symmetric(horizontal: 2, vertical: 4),
),
),
// Processing Tickets Section // Processing Tickets Section
if (processingTickets.isNotEmpty)
SectionHeading( SectionHeading(
title: 'Processing Tickets', title: 'Processing Tickets',
textStyle: TextStyle(fontSize: 14, fontWeight: FontWeight.w500), textStyle: TextStyle(fontSize: 14, fontWeight: FontWeight.w500),
padding: EdgeInsets.symmetric(horizontal: 2, vertical: 4), padding: EdgeInsets.symmetric(horizontal: 2, vertical: 4),
), ),
const SizedBox(height: 2), const SizedBox(height: 2),
if (processingTickets.isNotEmpty)
_buildProcessingTicketsSection(processingTickets), _buildProcessingTicketsSection(processingTickets),
const SizedBox(height: 10), const SizedBox(height: 10),
// Closed Tickets Section // Closed Tickets Section
if (closedTickets.isNotEmpty)
SectionHeading( SectionHeading(
title: 'Closed Tickets', title: 'Closed Tickets',
textStyle: TextStyle(fontSize: 14, fontWeight: FontWeight.w500), textStyle: TextStyle(fontSize: 14, fontWeight: FontWeight.w500),
...@@ -153,6 +164,7 @@ class _HelpScreenState extends State<HelpScreen> { ...@@ -153,6 +164,7 @@ class _HelpScreenState extends State<HelpScreen> {
), ),
const SizedBox(height: 2), const SizedBox(height: 2),
if (closedTickets.isNotEmpty)
_buildClosedTicketsSection(closedTickets), _buildClosedTicketsSection(closedTickets),
], ],
), ),
......
...@@ -127,7 +127,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> { ...@@ -127,7 +127,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> {
// Create New Ticket Section // Create New Ticket Section
SectionHeading( SectionHeading(
title: 'Select the order you are having issues with', title: 'Select the order you are having issues with',
textStyle: TextStyle(fontSize: 14, fontWeight: FontWeight.w500), textStyle: TextStyle(fontSize: 14, fontWeight: FontWeight.w500, fontFamily: "Poppins",),
padding: EdgeInsets.symmetric(horizontal: 4, vertical: 2), padding: EdgeInsets.symmetric(horizontal: 4, vertical: 2),
), ),
...@@ -280,7 +280,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> { ...@@ -280,7 +280,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> {
width: 42, width: 42,
fit: BoxFit.contain, fit: BoxFit.contain,
errorBuilder: (context, error, stack) => errorBuilder: (context, error, stack) =>
Image.asset('assets/images/gene_png.png', Image.asset('assets/images/dashboard_gen.png',
height: 40, width: 40), height: 40, width: 40),
), ),
), ),
...@@ -369,6 +369,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> { ...@@ -369,6 +369,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> {
visibleItems[i], visibleItems[i],
style: const TextStyle( style: const TextStyle(
color: Colors.black, color: Colors.black,
fontFamily: "Poppins",
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
), ),
...@@ -430,10 +431,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> { ...@@ -430,10 +431,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> {
} }
} }
void _showReasonBottomSheet( void _showReasonBottomSheet(Orders product) {
Orders product,
) {
// Your existing bottom sheet implementation
showModalBottomSheet( showModalBottomSheet(
context: context, context: context,
backgroundColor: Colors.white, backgroundColor: Colors.white,
...@@ -461,7 +459,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> { ...@@ -461,7 +459,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> {
), ),
), ),
), ),
SizedBox(height: 12,), SizedBox(height: 12),
Text( Text(
"Select Your Reason", "Select Your Reason",
style: TextStyle( style: TextStyle(
...@@ -496,6 +494,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> { ...@@ -496,6 +494,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> {
orderId: product.orderid.toString(), orderId: product.orderid.toString(),
icon: icon, icon: icon,
color: color, color: color,
bottomSheetContext: context, // Pass the bottom sheet context
); );
}, },
), ),
...@@ -513,25 +512,31 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> { ...@@ -513,25 +512,31 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> {
required String icon, required String icon,
required String orderId, required String orderId,
required Color color, required Color color,
required BuildContext bottomSheetContext, // Add this parameter
}) { }) {
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
Navigator.push( // Close the bottom sheet first
context, Navigator.pop(bottomSheetContext);
MaterialPageRoute(builder: (context) => HelpTicketScreen(
reason: title, // Then navigate to HelpTicketScreen after a small delay
Future.delayed(Duration(milliseconds: 300), () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => HelpTicketScreen(
reason: title,
sessionId: widget.sessionId,
accId: widget.accId,
orderId: orderId,
))
).then((_) {
final provider = Provider.of<HelpAndEnquiryProvider>(context, listen: false);
provider.fetchTicketList(
sessionId: widget.sessionId, sessionId: widget.sessionId,
accId: widget.accId, accId: widget.accId,
orderId: orderId, );
)) });
).then((_) {
final provider = Provider.of<HelpAndEnquiryProvider>(context, listen: false);
provider.fetchTicketList(
sessionId: widget.sessionId,
accId: widget.accId,
);
}); });
}, },
child: Container( child: Container(
padding: const EdgeInsets.symmetric(horizontal: 2, vertical: 1), padding: const EdgeInsets.symmetric(horizontal: 2, vertical: 1),
...@@ -565,6 +570,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> { ...@@ -565,6 +570,7 @@ class _OrderHelpScreenState extends State<OrderHelpScreen> {
title, title,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle( style: TextStyle(
fontFamily: "Poppins",
color: AppColors.nearDarkText, color: AppColors.nearDarkText,
fontSize: 13, fontSize: 13,
height: 1, height: 1,
......
...@@ -275,21 +275,32 @@ class _TicketChatScreenState extends State<TicketChatScreen> { ...@@ -275,21 +275,32 @@ class _TicketChatScreenState extends State<TicketChatScreen> {
), ),
); );
}, },
child: ClipRRect( child: Container(
borderRadius: BorderRadius.circular(12), decoration: BoxDecoration(
child: Image.network( borderRadius: BorderRadius.circular(12),
images[index], border: Border.all(
width: 100, color: Colors.grey, // Border color
height: 80, width: 1, // Border width
fit: BoxFit.cover, style: BorderStyle.solid, // Optional: solid, none
errorBuilder: (context, error, stackTrace) { ),
return Container( ),
width: 100,
height: 80, child: ClipRRect(
color: Colors.grey.shade200, borderRadius: BorderRadius.circular(12),
child: const Icon(Icons.broken_image, color: Colors.grey), child: Image.network(
); images[index],
}, width: 100,
height: 80,
fit: BoxFit.cover,
errorBuilder: (context, error, stackTrace) {
return Container(
width: 100,
height: 80,
color: Colors.grey.shade200,
child: const Icon(Icons.broken_image, color: Colors.grey),
);
},
),
), ),
), ),
), ),
......
...@@ -90,8 +90,9 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -90,8 +90,9 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
), ),
SizedBox(width: screenWidth * 0.025), SizedBox(width: screenWidth * 0.025),
Text( Text(
"Bill List", "Bill Details",
style: TextStyle( style: TextStyle(
fontFamily: "Poppins",
fontSize: isSmallScreen ? 14 : 16, fontSize: isSmallScreen ? 14 : 16,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Colors.black87, color: Colors.black87,
...@@ -114,9 +115,9 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -114,9 +115,9 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
child: _buildBody(provider, screenWidth, screenHeight), child: _buildBody(provider, screenWidth, screenHeight),
), ),
bottomNavigationBar: Container( bottomNavigationBar: Container(
height: screenHeight * 0.09, // Responsive height height: screenHeight * 0.085, // Responsive height
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
horizontal: screenWidth * 0.04, horizontal: screenWidth * 0.048,
vertical: screenHeight * 0.012, vertical: screenHeight * 0.012,
), ),
width: double.infinity, width: double.infinity,
...@@ -147,8 +148,9 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -147,8 +148,9 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
child: Text( child: Text(
"View Bill", "View Bill",
style: TextStyle( style: TextStyle(
fontFamily: "Poppins",
fontSize: isSmallScreen ? 13 : 14, fontSize: isSmallScreen ? 13 : 14,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w500,
fontStyle: FontStyle.normal, fontStyle: FontStyle.normal,
), ),
), ),
...@@ -492,76 +494,64 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -492,76 +494,64 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
SizedBox(height: screenHeight * 0.015), SizedBox(height: screenHeight * 0.015),
// Table-like layout for dates and price // Table-like layout for dates and price
Table( Row(
columnWidths: const { mainAxisAlignment: MainAxisAlignment.spaceBetween,
0: FlexColumnWidth(2),
1: FlexColumnWidth(1),
},
children: [ children: [
TableRow( Expanded(
children: [ flex: 8,
TableCell( child: Text(
child: Text( product.dispatchDate != null
product.dispatchDate != null ? "Dispatched On ${product.dispatchDate!}"
? "Dispatched On ${product.dispatchDate!}" : "Dispatch date not available",
: "Dispatch date not available", style: TextStyle(
style: TextStyle( fontSize: isSmallScreen ? 10 : 12,
fontSize: isSmallScreen ? 10 : 12, fontFamily: "Poppins",
fontFamily: "Poppins", fontWeight: FontWeight.w400,
fontWeight: FontWeight.w400, color: AppColors.subtitleText,
color: AppColors.subtitleText,
),
),
),
TableCell(
child: Align(
alignment: Alignment.centerRight,
child: Text(
"Plan",
style: TextStyle(
fontSize: isSmallScreen ? 10 : 12,
fontFamily: "Poppins",
fontWeight: FontWeight.w400,
color: Colors.black54,
),
),
),
), ),
], ),
), ),
TableRow( Expanded(
children: [ child: Text(
TableCell( "Plan",
child: Text( style: TextStyle(
product.receivedDate != null fontSize: isSmallScreen ? 10 : 12,
? "Received On ${product.receivedDate!}" fontFamily: "Poppins",
: "Receive date not available", fontWeight: FontWeight.w400,
style: TextStyle( color: Colors.black54,
fontSize: isSmallScreen ? 10 : 12,
fontFamily: "Poppins",
fontWeight: FontWeight.w400,
color: Colors.grey,
),
),
), ),
TableCell( ),
child: Align( ),
alignment: Alignment.centerRight, ],
child: Text( ),
product.totalPrice != null Row(
? "${product.totalPrice!}${product.per ?? 'mo'}" mainAxisAlignment: MainAxisAlignment.spaceBetween,
: 'Price not available', children: [
style: TextStyle( Expanded(
fontSize: isSmallScreen ? 12 : 14, flex: 7,
fontFamily: "Poppins", child: Text(
fontStyle: FontStyle.normal, product.receivedDate != null
fontWeight: FontWeight.w400, ? "Received On ${product.receivedDate!}"
color: Colors.black87, : "Receive date not available",
), style: TextStyle(
), fontSize: isSmallScreen ? 10 : 12,
), fontFamily: "Poppins",
fontWeight: FontWeight.w400,
color: Colors.grey,
), ),
], ),
),
Text(
product.totalPrice != null
? "₹${product.totalPrice!}${product.per ?? 'mo'}"
: 'Price not available',
style: TextStyle(
fontSize: isSmallScreen ? 12 : 14,
fontFamily: "Poppins",
fontStyle: FontStyle.normal,
fontWeight: FontWeight.w400,
color: Colors.black87,
),
), ),
], ],
), ),
...@@ -663,7 +653,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -663,7 +653,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
showModalBottomSheet( showModalBottomSheet(
context: context, context: context,
backgroundColor: Colors.white, backgroundColor: Colors.white,
isScrollControlled: true, // Add this to allow scrolling isScrollControlled: true,
shape: const RoundedRectangleBorder( shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.only( borderRadius: BorderRadius.only(
topLeft: Radius.circular(20), topLeft: Radius.circular(20),
...@@ -679,7 +669,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -679,7 +669,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
vertical: screenHeight * 0.016, vertical: screenHeight * 0.016,
), ),
constraints: BoxConstraints( constraints: BoxConstraints(
maxHeight: screenHeight * 0.7, // Limit maximum height maxHeight: screenHeight * 0.7,
), ),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
...@@ -706,7 +696,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -706,7 +696,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
), ),
), ),
SizedBox(height: screenHeight * 0.025), SizedBox(height: screenHeight * 0.025),
Expanded( // Wrap GridView with Expanded Expanded(
child: GridView.builder( child: GridView.builder(
shrinkWrap: true, shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(), physics: const NeverScrollableScrollPhysics(),
...@@ -714,7 +704,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -714,7 +704,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
crossAxisCount: 3, crossAxisCount: 3,
crossAxisSpacing: screenWidth * 0.03, crossAxisSpacing: screenWidth * 0.03,
mainAxisSpacing: screenWidth * 0.03, mainAxisSpacing: screenWidth * 0.03,
childAspectRatio: 0.85, // Reduced from 0.99 to prevent overflow childAspectRatio: 0.85,
), ),
itemCount: createNewTickets.length, itemCount: createNewTickets.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
...@@ -731,6 +721,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -731,6 +721,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
icon: icon, icon: icon,
color: color, color: color,
screenWidth: screenWidth, screenWidth: screenWidth,
bottomSheetContext: context, // Pass bottom sheet context
); );
}, },
), ),
...@@ -751,24 +742,31 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -751,24 +742,31 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
required String icon, required String icon,
required Color color, required Color color,
required double screenWidth, required double screenWidth,
required BuildContext bottomSheetContext, // Add this parameter
}) { }) {
final isSmallScreen = screenWidth < 360; final isSmallScreen = screenWidth < 360;
final iconSize = screenWidth * 0.20; // Slightly reduced final iconSize = screenWidth * 0.20;
final imageSize = screenWidth * 0.09; // Slightly reduced final imageSize = screenWidth * 0.09;
return GestureDetector( return GestureDetector(
onTap: () { onTap: () {
Navigator.push( // Close the bottom sheet first
context, Navigator.pop(bottomSheetContext);
MaterialPageRoute(
builder: (context) => HelpTicketScreen( // Then navigate to HelpTicketScreen after a small delay for smooth transition
reason: title, Future.delayed(Duration(milliseconds: 300), () {
sessionId: widget.sessionId, Navigator.push(
accId: widget.accId, context,
orderId: orderId, MaterialPageRoute(
builder: (context) => HelpTicketScreen(
reason: title,
sessionId: widget.sessionId,
accId: widget.accId,
orderId: orderId,
),
), ),
), );
); });
}, },
child: Container( child: Container(
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
...@@ -776,7 +774,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -776,7 +774,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
vertical: screenWidth * 0.002 vertical: screenWidth * 0.002
), ),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, // Use min to prevent overflow mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
// Icon container // Icon container
...@@ -798,9 +796,9 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -798,9 +796,9 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
), ),
), ),
), ),
SizedBox(height: screenWidth * 0.015), // Reduced spacing SizedBox(height: screenWidth * 0.015),
// Title // Title
SizedBox( // SizedBox(
width: iconSize, width: iconSize,
child: Text( child: Text(
title, title,
...@@ -808,7 +806,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -808,7 +806,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
style: TextStyle( style: TextStyle(
color: AppColors.nearDarkText, color: AppColors.nearDarkText,
fontFamily: "Poppins", fontFamily: "Poppins",
fontSize: isSmallScreen ? 11 : 13, // Slightly smaller font fontSize: isSmallScreen ? 11 : 13,
fontStyle: FontStyle.normal, fontStyle: FontStyle.normal,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
), ),
...@@ -816,7 +814,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> { ...@@ -816,7 +814,7 @@ class _ProductsDetailScreenState extends State<ProductsDetailScreen> {
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
), ),
SizedBox(height: screenWidth * 0.005), // Reduced spacing SizedBox(height: screenWidth * 0.005),
], ],
), ),
), ),
......
...@@ -388,7 +388,7 @@ class _ProfileScreenState extends State<ProfileScreen> { ...@@ -388,7 +388,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
fontFamily: "Poppins", fontFamily: "Poppins",
fontWeight: FontWeight.w400, fontWeight: FontWeight.w500,
color: AppColors.normalText, color: AppColors.normalText,
), ),
), ),
...@@ -428,7 +428,7 @@ class _ProfileScreenState extends State<ProfileScreen> { ...@@ -428,7 +428,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
style: TextStyle( style: TextStyle(
fontSize: 18, fontSize: 18,
fontFamily: "Poppins", fontFamily: "Poppins",
fontWeight: FontWeight.w500, fontWeight: FontWeight.w600,
color: AppColors.normalText, color: AppColors.normalText,
), ),
), ),
...@@ -536,13 +536,13 @@ class _ProfileScreenState extends State<ProfileScreen> { ...@@ -536,13 +536,13 @@ class _ProfileScreenState extends State<ProfileScreen> {
), ),
const SizedBox(height: 6), const SizedBox(height: 6),
Text(title, Text(title,
style: const TextStyle( style: TextStyle(
fontSize: 14, fontWeight: FontWeight.w400, fontFamily: "Poppins", color: Colors.black87)), fontSize: 14, fontWeight: FontWeight.w600, fontFamily: "Poppins", color: Colors.black87)),
const SizedBox(height: 2), const SizedBox(height: 2),
Text(value, Text(value,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: const TextStyle( style: TextStyle(
fontSize: 14, fontWeight: FontWeight.w400, fontFamily: "Poppins", color: Colors.black54)), fontSize: 14, fontWeight: FontWeight.w400, fontFamily: "Poppins", color: AppColors.subtitleText)),
], ],
); );
} }
...@@ -551,12 +551,12 @@ class _ProfileScreenState extends State<ProfileScreen> { ...@@ -551,12 +551,12 @@ class _ProfileScreenState extends State<ProfileScreen> {
return Column( return Column(
children: [ children: [
Text(title, Text(title,
style: const TextStyle( style: TextStyle(
fontSize: 14, fontWeight: FontWeight.w400, fontFamily: "Poppins", color: Colors.black87)), fontSize: 14, fontWeight: FontWeight.w600, fontFamily: "Poppins", color: Colors.black87)),
const SizedBox(height: 4), const SizedBox(height: 4),
Text(value, Text(value,
style: const TextStyle( style: TextStyle(
fontSize: 14, fontWeight: FontWeight.w400, fontFamily: "Poppins", color: Colors.black54)), fontSize: 14, fontWeight: FontWeight.w400, fontFamily: "Poppins", color: AppColors.subtitleText)),
], ],
); );
} }
......
...@@ -61,6 +61,22 @@ class _BillPendingToastState extends State<BillPendingToast> { ...@@ -61,6 +61,22 @@ class _BillPendingToastState extends State<BillPendingToast> {
: Column( : Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
InkResponse(
onTap: () => Navigator.pop(context),
child: CircleAvatar(
radius: 16,
backgroundColor: Colors.black12,
child: Icon(
Icons.close,
size: 16,
),
),
)
],
),
// 🔴 Red Pending Icon // 🔴 Red Pending Icon
Container( Container(
height: 60, height: 60,
...@@ -209,17 +225,18 @@ class _BillPendingToastState extends State<BillPendingToast> { ...@@ -209,17 +225,18 @@ class _BillPendingToastState extends State<BillPendingToast> {
), ),
) )
: const Icon(Icons.download_rounded, : const Icon(Icons.download_rounded,
color: Colors.black), color: Colors.white),
label: const Text( label: const Text(
"Download", "Download",
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
fontFamily: "Poppins", fontFamily: "Poppins",
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: Colors.black, color: Colors.white,
), ),
), ),
style: OutlinedButton.styleFrom( style: OutlinedButton.styleFrom(
backgroundColor: Colors.blue,
side: const BorderSide(color: Colors.black26), side: const BorderSide(color: Colors.black26),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(50), borderRadius: BorderRadius.circular(50),
...@@ -229,27 +246,27 @@ class _BillPendingToastState extends State<BillPendingToast> { ...@@ -229,27 +246,27 @@ class _BillPendingToastState extends State<BillPendingToast> {
), ),
), ),
const SizedBox(width: 12), const SizedBox(width: 12),
Expanded( // Expanded(
child: ElevatedButton( // child: ElevatedButton(
onPressed: widget.onPayNow, // onPressed: widget.onPayNow,
style: ElevatedButton.styleFrom( // style: ElevatedButton.styleFrom(
backgroundColor: AppColors.amountText, // backgroundColor: AppColors.amountText,
shape: RoundedRectangleBorder( // shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(50), // borderRadius: BorderRadius.circular(50),
), // ),
padding: const EdgeInsets.symmetric(vertical: 14), // padding: const EdgeInsets.symmetric(vertical: 14),
), // ),
child: const Text( // child: const Text(
"Pay Now", // "Pay Now",
style: TextStyle( // style: TextStyle(
fontSize: 15, // fontSize: 15,
fontFamily: "Poppins", // fontFamily: "Poppins",
fontWeight: FontWeight.w600, // fontWeight: FontWeight.w600,
color: Colors.white, // color: Colors.white,
), // ),
), // ),
), // ),
), // ),
], ],
), ),
], ],
......
...@@ -73,7 +73,23 @@ class _BillStatusToastState extends State<BillStatusToast> { ...@@ -73,7 +73,23 @@ class _BillStatusToastState extends State<BillStatusToast> {
: Column( : Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
// ✅ Success Tick Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
InkResponse(
onTap: () => Navigator.pop(context),
child: CircleAvatar(
radius: 16,
backgroundColor: Colors.black12,
child: Icon(
Icons.close,
size: 16,
),
),
)
],
),
// Success Tick
Container( Container(
height: 60, height: 60,
width: 60, width: 60,
......
...@@ -94,7 +94,7 @@ class _LoginScreenState extends State<LoginScreen> { ...@@ -94,7 +94,7 @@ class _LoginScreenState extends State<LoginScreen> {
// Fixed background image // Fixed background image
Positioned.fill( Positioned.fill(
child: Image.asset( child: Image.asset(
'assets/images/background.jpg', 'assets/images/login_background.png',
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
), ),
...@@ -168,10 +168,10 @@ class _LoginScreenState extends State<LoginScreen> { ...@@ -168,10 +168,10 @@ class _LoginScreenState extends State<LoginScreen> {
keyboardType: TextInputType.phone, keyboardType: TextInputType.phone,
onChanged: _validatePhone, onChanged: _validatePhone,
maxLength: 10, maxLength: 10,
style: const TextStyle(color: Colors.black), style: const TextStyle(color: Colors.black, fontFamily: "Poppins",fontSize: 14),
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Enter Mobile No.", hintText: "Enter Mobile No.",
hintStyle: const TextStyle(color: Colors.grey,fontFamily: "Poppins",), hintStyle: const TextStyle(color: Colors.grey,fontFamily: "Poppins", fontSize: 14),
filled: true, filled: true,
fillColor: Colors.white, fillColor: Colors.white,
counterText: "", // Remove character counter counterText: "", // Remove character counter
......
...@@ -97,9 +97,15 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -97,9 +97,15 @@ class _OtpScreenState extends State<OtpScreen> {
// Navigate to dashboard // Navigate to dashboard
Navigator.pushReplacement( Navigator.pushReplacement(
context, context,
MaterialPageRoute(builder: (_) => DashboardScreen( PageRouteBuilder(
accId: rentalProvider.otpResponse!.accId!, pageBuilder: (_, __, ___) => DashboardScreen(accId: rentalProvider.otpResponse!.accId!, sessionId: rentalProvider.otpResponse!.sessionId.toString(),),
sessionId: rentalProvider.otpResponse!.sessionId!,) transitionsBuilder: (_, animation, __, child) {
return FadeTransition(
opacity: animation,
child: child,
);
},
transitionDuration: const Duration(milliseconds: 800),
), ),
); );
} else { } else {
...@@ -243,7 +249,7 @@ class _OtpScreenState extends State<OtpScreen> { ...@@ -243,7 +249,7 @@ class _OtpScreenState extends State<OtpScreen> {
// Background image // Background image
Positioned.fill( Positioned.fill(
child: Image.asset( child: Image.asset(
'assets/images/background.jpg', 'assets/images/login_background.png',
fit: BoxFit.cover, fit: BoxFit.cover,
), ),
), ),
......
...@@ -99,8 +99,8 @@ class CustomSnackBar { ...@@ -99,8 +99,8 @@ class CustomSnackBar {
style: const TextStyle( style: const TextStyle(
color: Colors.white, color: Colors.white,
fontFamily: "Poppins", fontFamily: "Poppins",
fontWeight: FontWeight.w700, fontWeight: FontWeight.w500,
fontSize: 15, fontSize: 14,
letterSpacing: -0.2, letterSpacing: -0.2,
), ),
), ),
...@@ -111,7 +111,7 @@ class CustomSnackBar { ...@@ -111,7 +111,7 @@ class CustomSnackBar {
style: TextStyle( style: TextStyle(
fontFamily: "Poppins", fontFamily: "Poppins",
color: Colors.white.withOpacity(0.9), color: Colors.white.withOpacity(0.9),
fontSize: 14, fontSize: 13,
height: 1.3, height: 1.3,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
), ),
......