Commit 76ceb2cd authored by Sai Srinivas's avatar Sai Srinivas Committed by Sai Srinivas
Browse files

changes and fixes

parent 462cbf08
storePassword=genservices
keyPassword=genservices
keyAlias=genservices
storeFile=genservices.jks
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -36,6 +36,7 @@ class GetInTouchList {
String? id;
String? branchName;
String? googleReviewLink;
String? googleMapLink;
String? address;
String? loc;
String? stateName;
......@@ -48,6 +49,7 @@ class GetInTouchList {
{this.id,
this.branchName,
this.googleReviewLink,
this.googleMapLink,
this.address,
this.loc,
this.stateName,
......@@ -60,6 +62,7 @@ class GetInTouchList {
id = json['id'];
branchName = json['branch_name'];
googleReviewLink = json['google_review_link'];
googleMapLink = json['google_map_link'];
address = json['address'];
loc = json['loc'];
stateName = json['state_name'];
......@@ -74,6 +77,7 @@ class GetInTouchList {
data['id'] = this.id;
data['branch_name'] = this.branchName;
data['google_review_link'] = this.googleReviewLink;
data['google_map_link'] = this.googleMapLink;
data['address'] = this.address;
data['loc'] = this.loc;
data['state_name'] = this.stateName;
......
......@@ -2,6 +2,8 @@ class ComplaintListResponse {
String? error;
List<ComplaintList>? complaintList;
String? message;
String? prodName;
String? modelNo;
ComplaintListResponse({this.error, this.complaintList, this.message});
......@@ -14,6 +16,8 @@ class ComplaintListResponse {
});
}
message = json['message'];
prodName = json['prod_name'];
modelNo = json['model_name'];
}
Map<String, dynamic> toJson() {
......@@ -24,6 +28,8 @@ class ComplaintListResponse {
this.complaintList!.map((v) => v.toJson()).toList();
}
data['message'] = this.message;
data['prod_name'] = this.prodName;
data['model_name'] = this.modelNo;
return data;
}
}
......
......@@ -67,10 +67,11 @@ class HelpAndComplaintProvider extends ChangeNotifier {
Future<void> fetchComplaintsList({
required String accId,
required String sessionId,
required String genId,
}) async {
_setLoading(true);
try {
final response = await ApiCalling.fetchComplaintsListApi(accId, sessionId);
final response = await ApiCalling.fetchComplaintsListApi(accId, sessionId, genId);
if (response != null && response.error == "0") {
_complaintListResponse = response;
_errorMessage = null;
......@@ -111,7 +112,7 @@ class HelpAndComplaintProvider extends ChangeNotifier {
if (response != null && response.error == "0") {
// Optionally refresh list after successful submission
await fetchComplaintsList(accId: accId, sessionId: sessionId);
await fetchComplaintsList(accId: accId, sessionId: sessionId, genId: genId);
return response;
} else {
_errorMessage = response?.message ?? "Failed to add complaint";
......
......@@ -135,7 +135,7 @@ class _LoginScreenState extends State<LoginScreen> {
children: [
SizedBox(width: 30,),
SvgPicture.asset(
"assets/svg/genesis_logo_2io.svg",
"assets/svg/gensis_latest_logo.svg",
height: 50,
color: Colors.white,
),
......
......@@ -265,7 +265,7 @@ class _OtpScreenState extends State<OtpScreen> {
children: [
const SizedBox(width: 30),
SvgPicture.asset(
"assets/svg/genesis_logo_2io.svg",
"assets/svg/gensis_latest_logo.svg",
height: 50,
color: Colors.white,
),
......
......@@ -11,7 +11,7 @@ class AddComplaintScreen extends StatefulWidget {
final String sessionId;
final String product;
final String hashId;
final String modolNo;
const AddComplaintScreen({
Key? key,
......@@ -19,7 +19,6 @@ class AddComplaintScreen extends StatefulWidget {
required this.sessionId,
required this.product,
required this.hashId,
required this.modolNo,
}) : super(key: key);
@override
......@@ -178,7 +177,7 @@ class _AddComplaintScreenState extends State<AddComplaintScreen> {
borderRadius: BorderRadius.circular(12),
),
child: Text(
"#${widget.hashId} | ${widget.modolNo}",
"#${widget.hashId} | ${provider.dropDownsListResponse?.genDetails?.modelName}",
style: const TextStyle(
fontSize: 13,
fontWeight: FontWeight.w400,
......@@ -473,6 +472,7 @@ class _ComplaintFormState extends State<_ComplaintForm> {
borderSide: BorderSide.none,
),
errorText: _noteError,
errorStyle: TextStyle( color: Colors.red,),
hintStyle: TextStyle(fontSize: 14, color: Colors.grey,),
contentPadding:
const EdgeInsets.symmetric(horizontal: 12, vertical: 14),
......
......@@ -7,16 +7,20 @@ import 'package:gen_service/Screens/HelpAndComplaintScreens/SelectOrderHelpScree
import 'package:gen_service/Screens/ProfileScreen.dart';
import 'package:provider/provider.dart';
import '../../Utility/AppColors.dart';
import 'AddComplaintScreen.dart';
import 'ComplaintDetailsScreen.dart';
class ComplaintListScreen extends StatefulWidget {
final String accId;
final String sessionId;
final String genId;
const ComplaintListScreen({
Key? key,
required this.accId,
required this.sessionId,
required this.genId,
}) : super(key: key);
@override
......@@ -37,6 +41,7 @@ class _ComplaintListScreenState extends State<ComplaintListScreen> {
provider.fetchComplaintsList(
accId: widget.accId,
sessionId: widget.sessionId,
genId: widget.genId
);
});
}
......@@ -127,6 +132,7 @@ class _ComplaintListScreenState extends State<ComplaintListScreen> {
provider.fetchComplaintsList(
accId: widget.accId,
sessionId: widget.sessionId,
genId: widget.genId
);
},
style: ElevatedButton.styleFrom(
......@@ -198,6 +204,7 @@ class _ComplaintListScreenState extends State<ComplaintListScreen> {
await provider.fetchComplaintsList(
accId: widget.accId,
sessionId: widget.sessionId,
genId: widget.genId
);
},
child: SafeArea(
......@@ -218,6 +225,7 @@ class _ComplaintListScreenState extends State<ComplaintListScreen> {
await provider.fetchComplaintsList(
accId: widget.accId,
sessionId: widget.sessionId,
genId: widget.genId
);
},
stretchTriggerOffset: 300.0,
......@@ -285,7 +293,8 @@ class _ComplaintListScreenState extends State<ComplaintListScreen> {
/// Top Tile
InkResponse(
onTap: () {
Navigator.push(
if (widget.genId == "") {
Navigator.push(
context,
MaterialPageRoute(
builder:
......@@ -298,8 +307,31 @@ class _ComplaintListScreenState extends State<ComplaintListScreen> {
await provider.fetchComplaintsList(
accId: widget.accId,
sessionId: widget.sessionId,
genId: widget.genId
);
});
}
if (widget.genId != "") {
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => AddComplaintScreen(
accId: widget.accId,
sessionId: widget.sessionId,
product: data.prodName.toString(),
hashId: widget.genId.toString(),
),
),
).then((_) async {
await provider.fetchComplaintsList(
accId: widget.accId,
sessionId: widget.sessionId,
genId: widget.genId
);
});
}
},
child: Container(
padding: const EdgeInsets.symmetric(
......@@ -322,27 +354,57 @@ class _ComplaintListScreenState extends State<ComplaintListScreen> {
),
const SizedBox(width: 12),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: const [
Text(
"Get help for an order",
style: TextStyle(
fontFamily: "Poppins",
fontSize: 14,
fontWeight: FontWeight.w400,
color: Colors.black,
),
child: Stack(
children: [
if (widget.genId != "")
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
"Get help for this order",
style: TextStyle(
fontFamily: "Poppins",
fontSize: 14,
fontWeight: FontWeight.w400,
color: Colors.black,
),
),
const SizedBox(height: 4),
Text(
data.prodName!,
style: const TextStyle(
fontFamily: "Poppins",
fontSize: 12,
fontWeight: FontWeight.w400,
color: Colors.grey,
),
),
],
),
SizedBox(height: 4),
Text(
"Select a Generator",
style: TextStyle(
fontFamily: "Poppins",
fontSize: 12,
fontWeight: FontWeight.w400,
color: Colors.grey,
),
if (widget.genId == "")
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: const [
Text(
"Get help for an order",
style: TextStyle(
fontFamily: "Poppins",
fontSize: 14,
fontWeight: FontWeight.w400,
color: Colors.black,
),
),
SizedBox(height: 4),
Text(
"Select a Generator",
style: TextStyle(
fontFamily: "Poppins",
fontSize: 12,
fontWeight: FontWeight.w400,
color: Colors.grey,
),
),
],
),
],
),
......@@ -357,7 +419,7 @@ class _ComplaintListScreenState extends State<ComplaintListScreen> {
),
),
const SizedBox(height: 25),
const SizedBox(height: 4),
/// Raised Complaints
if (openComplaints.isNotEmpty)
......@@ -493,7 +555,7 @@ class ComplaintCard extends StatelessWidget {
fontFamily: "Poppins",
fontSize: 14,
fontWeight: FontWeight.w400,
color: AppColors.amountText,
color: status == "Open" ? AppColors.amountText : AppColors.normalText,
),
),
Text(
......@@ -502,7 +564,7 @@ class ComplaintCard extends StatelessWidget {
fontFamily: "Poppins",
fontSize: 14,
fontWeight: FontWeight.w400,
color: AppColors.amountText,
color: status == "Open" ? AppColors.amountText : AppColors.normalText,
),
),
],
......
......@@ -302,8 +302,7 @@ class _SelectOrderHelpScreenState extends State<SelectOrderHelpScreen> {
accId: widget.accId,
sessionId: widget.sessionId,
product: order.prodName.toString(),
hashId: order.hashId.toString(),
modolNo: order.engine.toString(),
hashId: order.id.toString(),
),
),
).then((_) async {
......@@ -454,7 +453,7 @@ class _SelectOrderHelpScreenState extends State<SelectOrderHelpScreen> {
SizedBox(width: 4),
if (amc == "2")
const Icon(
Icons.info_outline,
Icons.error_outline,
color: Colors.red,
size: 12,
),
......@@ -463,12 +462,12 @@ class _SelectOrderHelpScreenState extends State<SelectOrderHelpScreen> {
],
),
),
if (amc == "1" || amc == "2") SizedBox(width: 16),
if (amc == "1" || amc == "2") SizedBox(width: 10),
// for warranty
if (warranty == "1" || warranty == "2")
Container(
padding: const EdgeInsets.symmetric(
horizontal: 8,
horizontal: 6,
vertical: 4,
),
decoration: BoxDecoration(
......@@ -489,7 +488,7 @@ class _SelectOrderHelpScreenState extends State<SelectOrderHelpScreen> {
? "assets/svg/tick2_ic.svg"
: "assets/svg/tick3_ic.svg",
),
const SizedBox(width: 2),
const SizedBox(width: 1),
Text(
"Warranty",
style: TextStyle(
......@@ -503,10 +502,10 @@ class _SelectOrderHelpScreenState extends State<SelectOrderHelpScreen> {
: AppColors.subtitleText,
),
),
SizedBox(width: 4),
SizedBox(width: 2),
if (warranty == "2")
const Icon(
Icons.info_outline,
Icons.error_outline,
color: Colors.red,
size: 12,
),
......
......@@ -471,6 +471,7 @@ class _JobcardlistscreenState extends State<Jobcardlistscreen> {
.nearDarkText,
),
),
if(data[j].totalPrice != "0.00" && data[j].totalPrice != null && data[j].totalPrice != "0" && data[j].totalPrice != "")
InkResponse(
onTap: () {
hcProvider
......@@ -522,35 +523,39 @@ class _JobcardlistscreenState extends State<Jobcardlistscreen> {
),
],
),
Divider(
thickness: 0.3,
color: AppColors.subtitleText,
),
InkResponse(
onTap: () => _openPaymentSheet(context, data[j].totalPrice.toString()),
child: Container(
padding: EdgeInsets.symmetric(
vertical: 16,
horizontal: 10,
),
decoration: BoxDecoration(
color: AppColors.buttonColor,
borderRadius: BorderRadius.circular(
25,
if (data[j].totalPrice != "0.00" && data[j].totalPrice != null && data[j].totalPrice != "0" && data[j].totalPrice != "")...[
Divider(
thickness: 0.3,
color: AppColors.subtitleText,
),
InkResponse(
onTap: () => _openPaymentSheet(context, data[j].totalPrice.toString()),
child: Container(
padding: EdgeInsets.symmetric(
vertical: 16,
horizontal: 10,
),
),
child: Center(
child: Text(
"Pay Now",
style: TextStyle(
color: Colors.white,
fontSize: 14,
fontWeight: FontWeight.w600,
decoration: BoxDecoration(
color: AppColors.buttonColor,
borderRadius: BorderRadius.circular(
25,
),
),
child: Center(
child: Text(
"Pay Now",
style: TextStyle(
color: Colors.white,
fontSize: 14,
fontWeight: FontWeight.w600,
),
),
),
),
),
),
]
],
),
);
......@@ -664,27 +669,43 @@ class _JobcardlistscreenState extends State<Jobcardlistscreen> {
padding: EdgeInsets.symmetric(vertical: 5),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
MainAxisAlignment.start,
children: [
Text(
"${j + 1}. ${list?[j].partName}",
style: TextStyle(
fontSize: 14,
color: AppColors.nearDarkText,
Expanded(
flex:4,
child: Text(
"${j + 1}. ${list?[j].partName}",
maxLines: 3,
textAlign: TextAlign.left,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 14,
color: AppColors.nearDarkText,
),
),
),
Text(
"₹${list?[j].price} * ${list?[j].qty}",
style: TextStyle(
fontSize: 14,
color: AppColors.nearDarkText,
Spacer(),
Expanded(
flex: 2,
child: Text(
"₹${list?[j].price} * ${list?[j].qty}",
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 14,
color: AppColors.nearDarkText,
),
),
),
Text(
"₹${list?[j].totalPrice}",
style: TextStyle(
fontSize: 14,
color: AppColors.nearDarkText,
Spacer(),
Expanded(
flex: 3,
child: Text(
textAlign: TextAlign.right,
"₹${list?[j].totalPrice}",
style: TextStyle(
fontSize: 14,
color: AppColors.nearDarkText,
),
),
),
],
......
......@@ -418,7 +418,7 @@ class _serviceListScreenState extends State<serviceListScreen> {
child: Padding(
padding:
const EdgeInsets.symmetric(
horizontal: 2,
horizontal: 1.7,
),
child: Icon(
Icons
......@@ -431,7 +431,7 @@ class _serviceListScreenState extends State<serviceListScreen> {
: const Color(
0xffCECECE,
),
size: 24,
size: 22,
),
),
);
......
import 'dart:async';
import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:gen_service/Models/DashboardResponse.dart';
......@@ -38,6 +40,8 @@ class HomeScreen extends StatefulWidget {
}
class _HomeScreenState extends State<HomeScreen> {
Timer? _connectivityTimer;
bool _hasInternet = true;
late Razorpay _razorpay;
bool? isSuccess;
var paymentMethod = "";
......@@ -49,6 +53,8 @@ class _HomeScreenState extends State<HomeScreen> {
@override
void initState() {
super.initState();
// Initialize connectivity check
_initConnectivity();
_razorpay = Razorpay();
Future.microtask(() {
final dashboardProvider = Provider.of<DashboardProvider>(
......@@ -59,6 +65,74 @@ class _HomeScreenState extends State<HomeScreen> {
});
}
Future<void> _initConnectivity() async {
try {
_checkConnectivity();
_connectivityTimer = Timer.periodic(const Duration(seconds: 3), (timer) {
_checkConnectivity();
});
} catch (e) {
debugPrint("Connectivity initialization error: $e");
_updateConnectionStatus(false);
}
}
Future<void> _checkConnectivity() async {
try {
final connectivity = Connectivity();
final results = await connectivity.checkConnectivity();
final hasInternet = results.any((element) =>
element == ConnectivityResult.wifi ||
element == ConnectivityResult.mobile);
if (hasInternet) {
try {
final result = await InternetAddress.lookup('google.com');
final socketCheck = result.isNotEmpty && result[0].rawAddress.isNotEmpty;
_updateConnectionStatus(socketCheck);
} catch (e) {
_updateConnectionStatus(false);
}
} else {
_updateConnectionStatus(false);
}
} catch (e) {
debugPrint("Connectivity check error: $e");
_updateConnectionStatus(false);
}
}
void _updateConnectionStatus(bool hasInternet) {
if (mounted) {
setState(() {
_hasInternet = hasInternet;
});
}
if (!hasInternet) {
_showNoInternetSnackbar();
} else {
ScaffoldMessenger.of(context).hideCurrentSnackBar();
}
}
void _showNoInternetSnackbar() {
if (mounted) {
WidgetsBinding.instance.addPostFrameCallback((_) {
ScaffoldMessenger.of(context).hideCurrentSnackBar();
CustomSnackBar.showError(
context: context,
message: "No internet connection! Please connect to the internet.",
action: SnackBarAction(
label: "RETRY",
onPressed: _checkConnectivity,
),
);
});
}
}
//_________________________________________________________
void _handlePaymentSuccess(PaymentSuccessResponse response) {
......@@ -468,7 +542,7 @@ class _HomeScreenState extends State<HomeScreen> {
data.userName.toString(),
style: const TextStyle(
color: Colors.white,
fontSize: 24,
fontSize: 22,
fontWeight: FontWeight.w400,
),
maxLines: 1,
......@@ -593,7 +667,7 @@ class _HomeScreenState extends State<HomeScreen> {
),
),
),
const SizedBox(height: 20),
const SizedBox(height: 25),
// Get in Touch Card
InkResponse(
......@@ -613,7 +687,7 @@ class _HomeScreenState extends State<HomeScreen> {
width: double.infinity,
padding: const EdgeInsets.symmetric(
horizontal: 20,
vertical: 22,
vertical: 20,
),
decoration: BoxDecoration(
color: AppColors.amountText,
......@@ -846,7 +920,7 @@ class _HomeScreenState extends State<HomeScreen> {
SizedBox(width: 4),
if (amc == "2")
const Icon(
Icons.info_outline,
Icons.error_outline,
color: Colors.red,
size: 12,
),
......@@ -855,12 +929,12 @@ class _HomeScreenState extends State<HomeScreen> {
],
),
),
if (amc == "1" || amc == "2") SizedBox(width: 16),
if (amc == "1" || amc == "2") SizedBox(width: 10),
// for warranty
if (warranty == "1" || warranty == "2")
Container(
padding: const EdgeInsets.symmetric(
horizontal: 8,
horizontal: 6,
vertical: 4,
),
decoration: BoxDecoration(
......@@ -898,7 +972,7 @@ class _HomeScreenState extends State<HomeScreen> {
SizedBox(width: 4),
if (warranty == "2")
const Icon(
Icons.info_outline,
Icons.error_outline,
color: Colors.red,
size: 12,
),
......@@ -1029,7 +1103,7 @@ class _HomeScreenState extends State<HomeScreen> {
const SizedBox(height: 8),
Container(
width: double.infinity,
padding: EdgeInsets.all(22),
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
gradient:
dashboardData.balanceType == 'Pending Balance'
......@@ -1071,7 +1145,7 @@ class _HomeScreenState extends State<HomeScreen> {
Row(
children: [
const Icon(
Icons.info_outline,
Icons.error_outline,
color: Colors.white,
size: 16,
),
......@@ -1094,12 +1168,12 @@ class _HomeScreenState extends State<HomeScreen> {
child: Column(
children: [
Text(
"*Make sure to pay before\n you incur any fines.",
"*Make sure to pay before you incur any fines.",
maxLines: 2,
textAlign: TextAlign.end,
style: TextStyle(
color: const Color(0xAAFFFFFF),
fontSize: 12,
fontSize: 11,
fontWeight: FontWeight.w400,
),
),
......@@ -1147,13 +1221,57 @@ class _HomeScreenState extends State<HomeScreen> {
final complaints = dashboardData.complaints ?? [];
if (complaints.isEmpty) {
return const Padding(
padding: EdgeInsets.symmetric(vertical: 20),
child: Center(
child: Text(
"No Complaints Found",
style: TextStyle(fontSize: 14, color: Colors.grey),
),
return Padding(
padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 14),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const Text(
"Complaints",
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Colors.black87,
),
),
InkResponse(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => ComplaintListScreen(
accId: widget.accId,
sessionId: widget.sessionId,
genId: "",
),
),
);
},
child: const Text(
'See All',
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w500,
color: AppColors.amountText,
),
),
),
],
),
SizedBox(height: 20,),
Padding(
padding: const EdgeInsets.symmetric(vertical: 10),
child: const Center(
child: Text(
"No Open Complaints Found",
style: TextStyle(fontSize: 14, color: Colors.grey),
),
),
),
],
),
);
}
......@@ -1184,6 +1302,7 @@ class _HomeScreenState extends State<HomeScreen> {
(context) => ComplaintListScreen(
accId: widget.accId,
sessionId: widget.sessionId,
genId: "",
),
),
);
......@@ -1272,7 +1391,7 @@ class _HomeScreenState extends State<HomeScreen> {
color:
(c.openStatus?.toLowerCase() == 'open')
? AppColors.successBG
: AppColors.warningBg2,
: AppColors.yellowBG,
borderRadius: BorderRadius.circular(10),
),
child: Text(
......@@ -1283,7 +1402,7 @@ class _HomeScreenState extends State<HomeScreen> {
color:
(c.openStatus?.toLowerCase() == 'open')
? AppColors.success
: AppColors.warningText,
: AppColors.normalText,
),
),
),
......
......@@ -556,7 +556,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
data.name.toString(),
style: const TextStyle(
color: Colors.white,
fontSize: 24,
fontSize: 22,
fontWeight: FontWeight.w400,
),
maxLines: 1,
......@@ -629,11 +629,12 @@ class _ProfileScreenState extends State<ProfileScreen> {
const SizedBox(height: 20),
// email
if (data.email != "" && data.email != null)
_buildItemRow(
icon: "assets/svg/message_ic.svg",
iconBg: Color(0xFFDFF8FF),
title: "Email ID",
subTitle: data.email.toString()
icon: "assets/svg/message_ic.svg",
iconBg: Color(0xFFDFF8FF),
title: "Email ID",
subTitle: data.email.toString()
),
// address
_buildItemRow(
......@@ -659,18 +660,18 @@ class _ProfileScreenState extends State<ProfileScreen> {
Spacer(),
Align(
alignment: Alignment.bottomCenter,
alignment: Alignment.bottomCenter,
child: Column(
mainAxisAlignment: MainAxisAlignment.end,
children: [
SvgPicture.asset(
"assets/svg/genesis_logo_2io.svg",
height: 55,
"assets/svg/gensis_latest_logo.svg",
height: 58,
color: AppColors.buttonColor,
),
SizedBox(height: 12,),
Text(
'Genesis Poweronics PVT. Ltd.',
'Genesis Poweronics Pvt. Ltd.',
style: TextStyle(
fontSize: 14,
fontWeight: FontWeight.w400,
......@@ -719,8 +720,8 @@ class _ProfileScreenState extends State<ProfileScreen> {
Container(
padding: EdgeInsets.all(title =="Address" ? 8 :12),
decoration: BoxDecoration(
color: isShow ? iconBg : Colors.transparent,
borderRadius: BorderRadius.circular(18)
color: isShow ? iconBg : Colors.transparent,
borderRadius: BorderRadius.circular(18)
),
child: SvgPicture.asset(
height: title =="Address" ? 34: 26,
......
......@@ -31,6 +31,7 @@ class _BillDetailScreenState extends State<BillDetailScreen> {
final prefs = SharedPreferencesService.instance;
@override
void initState() {
super.initState();
......@@ -365,6 +366,7 @@ class _BillDetailScreenState extends State<BillDetailScreen> {
const SizedBox(width: 12),
/// Pay Now Button
if (details.totalAmount != "0.00")
Expanded(
child: ElevatedButton(
onPressed: () {
......
......@@ -298,7 +298,7 @@ class _TransactionScreenState extends State<TransactionListScreen> {
if(isPending == false)
const SizedBox(height: 4),
if(isPending == false)
if(isPending == false && lastPaid != null && lastPaid != "")
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
......
......@@ -246,6 +246,7 @@ class _ContactMapState extends State<ContactMap> {
branchName: item.branchName ?? "Unknown Branch",
address: item.address ?? "No address available",
phoneNo: item.telephoneNo ?? "",
mapLink: item.googleMapLink ?? "",
lat: item.latitude ?? "",
long: item.longitude ?? "",
),
......@@ -274,6 +275,7 @@ class _ContactMapState extends State<ContactMap> {
required String branchName,
required String address,
required String phoneNo,
required String mapLink,
required String lat,
required String long,
}) {
......@@ -316,8 +318,15 @@ class _ContactMapState extends State<ContactMap> {
Row(
children: [
InkResponse(
onTap: () {
onTap: () async {
// map lat & long
var location = "$lat, $long";
if (await canLaunch(mapLink)) {
await launchUrl(Uri.parse(
"https://maps.google.com?q=$location"));
} else {
throw 'Could not launch $mapLink';
}
},
child: Container(
padding: const EdgeInsets.all(1),
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment