Commit 528df0d2 authored by Sai Srinivas's avatar Sai Srinivas
Browse files

14-05-2025 By Sai Srinivas

All UI Adjustments and Font Sizes
parent fd946558
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/PaymentCollectionProvider.dart'; import 'package:generp/Notifiers/PaymentCollectionProvider.dart';
import 'package:generp/Utils/commonWidgets.dart';
import 'package:generp/screens/WebERPScreen.dart'; import 'package:generp/screens/WebERPScreen.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
...@@ -32,200 +33,202 @@ class _MonthlycollectionState extends State<Monthlycollection> { ...@@ -32,200 +33,202 @@ class _MonthlycollectionState extends State<Monthlycollection> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Paymentcollectionprovider>( return Consumer<Paymentcollectionprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
return Scaffold( var sendWidget = InkResponse(
backgroundColor: AppColors.scaffold_bg_color, onTap: () async {
appBar: AppBar( var res = await Navigator.push(
automaticallyImplyLeading: false, context,
elevation: 2.0, MaterialPageRoute(builder: (context) => Accountsuggestions()),
title: SizedBox( );
child: Row( if(res==true){
mainAxisAlignment: MainAxisAlignment.start, provider.PaymentCollectionAPI(context);
crossAxisAlignment: CrossAxisAlignment.center, }
children: [ },
InkResponse( child: SvgPicture.asset(
onTap: () => Navigator.pop(context, true), "assets/svg/add_account.svg",
child: SvgPicture.asset( width: 20,
"assets/svg/app_bar_back.svg", color: Color(0xFF2D2D2D),
height: 25, height: 20,
),
),
Text(
"Payment Collection",
style: TextStyle(
fontSize: 16,
height: 1.1,
color: AppColors.semi_black,
),
),
Spacer(),
InkResponse(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Accountsuggestions(),
),
);
},
child: SvgPicture.asset("assets/svg/scanner.svg"),
),
],
),
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(
bottom: Radius.circular(30), // Adjust the radius as needed
),
),
), ),
body: Container( );
child: ListView.builder( return WillPopScope(
scrollDirection: Axis.vertical, onWillPop: () => onBackPressed(context),
shrinkWrap: true, child: Scaffold(
itemCount: provider.paymenCollectionList.length, resizeToAvoidBottomInset: true,
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), backgroundColor: AppColors.scaffold_bg_color,
appBar: appbar2(context, "Payment Collection", sendWidget),
body: provider.paymenCollectionList.isNotEmpty?Container(
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
physics: AlwaysScrollableScrollPhysics(),
itemCount: provider.paymenCollectionList.length,
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10),
itemBuilder: (context, index) {
itemBuilder: (context, index) { return Container(
return Container( padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10),
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), margin: EdgeInsets.symmetric(vertical: 5),
margin: EdgeInsets.symmetric(vertical: 5), decoration: BoxDecoration(
decoration: BoxDecoration( color: Colors.white,
color: Colors.white, borderRadius: BorderRadius.circular(20),
borderRadius: BorderRadius.circular(20), ),
), child: Column(
child: Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ Row(
Row( crossAxisAlignment: CrossAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center, children: [
children: [ Expanded(
Expanded( flex: 1,
flex: 1, child: Container(
child: SvgPicture.asset( padding: EdgeInsets.symmetric(
"assets/svg/se_block_head.svg", horizontal: 10,
vertical: 10,
),
decoration: BoxDecoration(
color: Color(0xFFE6F6FF),
borderRadius: BorderRadius.circular(8),
),
child: SvgPicture.asset(
width: 30,
height: 30,
"assets/svg/se_block_head.svg",
),
),
), ),
), SizedBox(width: 10),
SizedBox(width: 5),
Column( Expanded(
crossAxisAlignment: CrossAxisAlignment.start, flex: 4,
children: [ child: SizedBox(
Text( child: Column(
"${provider.paymenCollectionList[index].accountName}", crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"${provider.paymenCollectionList[index].accountName}",
style: TextStyle(
fontFamily: "JakartaMedium"
),
),
Text(
"₹${provider.paymenCollectionList[index].amount}",
style: TextStyle(color: AppColors.app_blue),
),
// Text("Gen Pvt. Ltd"),
],
),
),
),
Container(
height: 35,
padding: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
color: Color(0xFFE3FFE0),
borderRadius: BorderRadius.circular(8),
),
child: Center(
child: Text(
"${provider.paymenCollectionList[index].approvalStatus}",
style: TextStyle(
fontSize: 13,
color: Color(0xFF0D9C00)),
),
), ),
// Text("Gen Pvt. Ltd"),
],
),
Spacer(),
Expanded(
flex: 2,
child: Text(
"₹${provider.paymenCollectionList[index].amount}",
style: TextStyle(color: AppColors.app_blue),
), ),
// Expanded(
// flex: 1,
// child: InkResponse(
// onTap: () {
// _showOptionsSheet(context);
// },
// child: Icon(Icons.more_vert),
// ),
// ),
],
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Divider(
thickness: 0.5,
color: Color(0xFFD7D7D7),
), ),
// Expanded( ),
// flex: 1, SizedBox(height: 5),
// child: InkResponse( ...List.generate(2, (j) {
// onTap: () { final textheads = ["ID", "Generator Type"];
// _showOptionsSheet(context); final textSubheads = [
// }, provider.paymenCollectionList[index].paymentRefNo,
// child: Icon(Icons.more_vert), provider.paymenCollectionList[index].paymentMode,
// ), ];
// ), return Container(
], padding: EdgeInsets.symmetric(vertical: 3),
), child: Column(
SizedBox(height: 10), children: [
...List.generate(2, (j) { Row(
final textheads = ["ID", "Generator Type"]; crossAxisAlignment: CrossAxisAlignment.start,
final textSubheads = [ children: [
provider.paymenCollectionList[index].paymentRefNo, Expanded(
provider.paymenCollectionList[index].paymentMode, flex: 1,
]; child: Text(textheads[j].toString(),style: TextStyle(
return Container( fontFamily: "JakartaMedium"
padding: EdgeInsets.symmetric(vertical: 3), ),),
child: Column( ),
children: [ SizedBox(width: 5),
Row( Expanded(
mainAxisAlignment: flex: 2,
MainAxisAlignment.spaceBetween, child: Text(
children: [ textSubheads[j].toString(),
Column( style: TextStyle(
crossAxisAlignment: color: Color(0xFF818181),
CrossAxisAlignment.start,
children: [
Text(textheads[j].toString()),
Text(textSubheads[j].toString()),
],
),
if (j == 1)
Container(
height: 30,
padding: EdgeInsets.symmetric(
horizontal: 10,
),
decoration: BoxDecoration(
color: Color(0xFFE3FFE0),
borderRadius: BorderRadius.circular(8),
),
child: Center(
child: Text(
"${provider.paymenCollectionList[index].approvalStatus}",
style: TextStyle(
color: Color(0xFF0D9C00),
),
), ),
), ),
), ),
], ],
),
if (j == 0)
Divider(
thickness: 0.5,
color: Color(0xFFD7D7D7),
), ),
], ],
),
);
}),
SizedBox(height: 10),
InkResponse(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => WebErpScreen(
erp_url:
provider
.paymenCollectionList[index]
.paymentProofFilePath ??
"",
),
), ),
); );
}, }),
child: SizedBox( SizedBox(height: 10),
child: Row( InkResponse(
mainAxisAlignment: MainAxisAlignment.start, onTap: () {
crossAxisAlignment: CrossAxisAlignment.center, Navigator.push(
children: [ context,
Text( MaterialPageRoute(
"View Attachment", builder:
style: TextStyle(color: AppColors.app_blue), (context) => WebErpScreen(
erp_url:
provider
.paymenCollectionList[index]
.paymentProofFilePath ??
"",
),
), ),
SizedBox(width: 5), );
SvgPicture.asset("assets/svg/next_button.svg"), },
], child: SizedBox(
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
"View Attachment",
style: TextStyle(color: AppColors.app_blue,fontFamily: "JakartaMedium"),
),
SizedBox(width: 5),
SvgPicture.asset("assets/svg/next_button.svg"),
],
),
), ),
), ),
), ],
], ),
), );
); },
}, ),
), ):Emptywidget(context),
), ),
); );
}, },
......
...@@ -101,7 +101,8 @@ class _NearbygeneratorsState extends State<Nearbygenerators> { ...@@ -101,7 +101,8 @@ class _NearbygeneratorsState extends State<Nearbygenerators> {
max: 100, max: 100,
divisions: 100, divisions: 100,
label: provider.currentValue.toStringAsFixed(2), label: provider.currentValue.toStringAsFixed(2),
inactiveColor: Colors.grey, inactiveColor: Color(0xFFD7D7D7),
activeColor: AppColors.cyan_blue,
onChanged: (value) { onChanged: (value) {
provider.currentValue = value; provider.currentValue = value;
provider.debounce(() { provider.debounce(() {
...@@ -109,41 +110,49 @@ class _NearbygeneratorsState extends State<Nearbygenerators> { ...@@ -109,41 +110,49 @@ class _NearbygeneratorsState extends State<Nearbygenerators> {
}, Duration(milliseconds: 500)); }, Duration(milliseconds: 500));
}, },
), ),
Text( Align(
'Status', alignment: Alignment.centerLeft,
child: Text(
'Status',
style: TextStyle( style: TextStyle(
color: Colors.black, fontSize: 18.0,
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
),
), ),
), ),
Container( Container(
width: 200, // Set the desired width here child: Row(
child: DropdownButton<String>( children: [
value: provider.selectedItem, Expanded(
items: child: DropdownButton<String>(
<String>[ value: provider.selectedItem,
'Active', items:
'Inactive', <String>[
'Suspense', 'Active',
].map<DropdownMenuItem<String>>((String value,) { 'Inactive',
return DropdownMenuItem<String>( 'Suspense',
value: value, ].map<DropdownMenuItem<String>>((String value,) {
child: Text(value), return DropdownMenuItem<String>(
); value: value,
}).toList(), child: Text(value),
onChanged: (String? newValue) { );
setState(() { }).toList(),
provider.selectedItem = newValue!; onChanged: (String? newValue) {
}); setState(() {
}, provider.selectedItem = newValue!;
icon: Icon( });
Icons.keyboard_arrow_down, },
), icon: Icon(
iconSize: 12, Icons.keyboard_arrow_down,
iconEnabledColor: ),
Colors iconSize: 12,
.black, // Remove the default dropdown icon iconEnabledColor:
Colors
.black, // Remove the default dropdown icon
),
),
],
), ),
), ),
SizedBox(height: 30.0), SizedBox(height: 30.0),
...@@ -199,46 +208,50 @@ class _NearbygeneratorsState extends State<Nearbygenerators> { ...@@ -199,46 +208,50 @@ class _NearbygeneratorsState extends State<Nearbygenerators> {
child: Icon(Icons.filter_alt_outlined), child: Icon(Icons.filter_alt_outlined),
)); ));
return Scaffold( return WillPopScope(
appBar: appbar2(context, "Nearby Generators",sendWidget), onWillPop: () => onBackPressed(context),
backgroundColor: AppColors.scaffold_bg_color, child: Scaffold(
body: Container( resizeToAvoidBottomInset: true,
child: SingleChildScrollView( appBar: appbar2(context, "Nearby Generators",sendWidget),
child:Column( backgroundColor: AppColors.scaffold_bg_color,
children: [ body: Container(
ClipRRect( child: SingleChildScrollView(
// Apply border radius using ClipRRect child:Column(
borderRadius: BorderRadius.only( children: [
topLeft: Radius.circular(30.0), ClipRRect(
topRight: Radius.circular(30.0), // Apply border radius using ClipRRect
), borderRadius: BorderRadius.only(
// padding: EdgeInsets.fromLTRB(10, 20, 10, 20), topLeft: Radius.circular(30.0),
child: Container( topRight: Radius.circular(30.0),
height: MediaQuery.of(context).size.height, ),
child: Stack(children: [ // padding: EdgeInsets.fromLTRB(10, 20, 10, 20),
GoogleMap( child: Container(
myLocationEnabled: true, height: MediaQuery.of(context).size.height,
zoomGesturesEnabled: true, child: Stack(children: [
GoogleMap(
myLocationEnabled: true,
zoomGesturesEnabled: true,
initialCameraPosition: CameraPosition( initialCameraPosition: CameraPosition(
target: provider.startLocation, target: provider.startLocation,
zoom: 14.0, zoom: 14.0,
),
markers:provider.markers.toSet(),
mapType: MapType.normal,
onMapCreated: (controller) {
setState(() {
provider.mapController = controller;
});
},
onCameraMove: (position) {
provider.onCameraMove(context,position);
},
), ),
markers:provider.markers.toSet(), ]),
mapType: MapType.normal, ),
onMapCreated: (controller) {
setState(() {
provider.mapController = controller;
});
},
onCameraMove: (position) {
provider.onCameraMove(context,position);
},
),
]),
), ),
), ],
], ),
), ),
), ),
), ),
......
...@@ -30,258 +30,293 @@ class _PcwalletState extends State<Pcwallet> { ...@@ -30,258 +30,293 @@ class _PcwalletState extends State<Pcwallet> {
return Consumer<Pcwalletprovider>( return Consumer<Pcwalletprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
final groupedData = provider.groupByDate(provider.historyList); final groupedData = provider.groupByDate(provider.historyList);
return Scaffold( return WillPopScope(
appBar: AppBar( onWillPop: () => onBackPressed(context),
automaticallyImplyLeading: false, child: Scaffold(
elevation: 2.0, resizeToAvoidBottomInset: true,
title: SizedBox( appBar: AppBar(
child: Row( automaticallyImplyLeading: false,
mainAxisAlignment: MainAxisAlignment.start, elevation: 2.0,
crossAxisAlignment: CrossAxisAlignment.center, title: SizedBox(
children: [ child: Row(
InkResponse( mainAxisAlignment: MainAxisAlignment.start,
onTap: () => Navigator.pop(context, true), crossAxisAlignment: CrossAxisAlignment.center,
child: SvgPicture.asset( children: [
"assets/svg/app_bar_back.svg", InkResponse(
height: 25, onTap: () => Navigator.pop(context, true),
child: SvgPicture.asset(
"assets/svg/app_bar_back.svg",
height: 25,
),
), ),
), InkResponse(
Text( onTap: () => Navigator.pop(context,true),
"P.C. Wallet", child: Text(
style: TextStyle( "P.C. Wallet",
fontSize: 16, style: TextStyle(
height: 1.1, fontSize: 16,
color: AppColors.semi_black, height: 1.1,
), fontFamily: "JakartaSemiBold",
), color: AppColors.semi_black,
Spacer(),
Container(
padding: EdgeInsets.symmetric(horizontal: 10),
height: 40,
decoration: BoxDecoration(
color: Color(0xFFF2FAFF),
borderRadius: BorderRadius.circular(16),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SvgPicture.asset(
'assets/svg/pc_wallet.svg',
height: 30,
),
SizedBox(width: 5),
Text(
"${provider.totlDetails.balanceAmount}",
style: TextStyle(fontSize: 14),
), ),
], ),
),
Spacer(),
Container(
padding: EdgeInsets.symmetric(horizontal: 10),
height: 40,
decoration: BoxDecoration(
color: Color(0xFFF2FAFF),
borderRadius: BorderRadius.circular(16),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SvgPicture.asset(
'assets/svg/pc_wallet.svg',
height: 30,
),
SizedBox(width: 5),
Text(
"${provider.totlDetails.balanceAmount??"0.00"}",
style: TextStyle(fontSize: 14),
),
],
),
), ),
), ],
], ),
), ),
), shape: RoundedRectangleBorder(
shape: RoundedRectangleBorder( borderRadius: BorderRadius.vertical(
borderRadius: BorderRadius.vertical( bottom: Radius.circular(30), // Adjust the radius as needed
bottom: Radius.circular(30), // Adjust the radius as needed ),
), ),
), ),
), backgroundColor: AppColors.scaffold_bg_color,
backgroundColor: AppColors.scaffold_bg_color, body: Container(
body: Container( child: SingleChildScrollView(
child: SingleChildScrollView( child: Column(
child: Column( children: [
children: [ Container(
Container( padding: EdgeInsets.symmetric(horizontal: 10, vertical: 15),
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 15), decoration: BoxDecoration(
decoration: BoxDecoration( color: Colors.white,
color: Colors.white, borderRadius: BorderRadius.circular(16),
borderRadius: BorderRadius.circular(16), ),
), child: Row(
child: Row( children: [
children: [ Expanded(
Expanded( child: Container(
child: Container( padding: EdgeInsets.symmetric(
padding: EdgeInsets.symmetric( horizontal: 15,
horizontal: 15, vertical: 15,
vertical: 15, ),
), decoration: BoxDecoration(
decoration: BoxDecoration( color: Color(0xFFE7FFE5),
color: Color(0xFFE7FFE5), borderRadius: BorderRadius.circular(16),
borderRadius: BorderRadius.circular(16), ),
), child: Column(
child: Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ Row(
Row( crossAxisAlignment: CrossAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center, children: [
children: [ Text(
Text( "₹",
"₹", style: TextStyle(
style: TextStyle( height: 1,
height: 1, color: Color(0xFF0D9C00),
color: Color(0xFF0D9C00), ),
), ),
), Text(
Text( "${provider.totlDetails.creditAmount??"0.00"}",
"${provider.totlDetails.creditAmount}", style: TextStyle(
style: TextStyle( fontSize: 30,
fontSize: 30, height: 1,
height: 1, color: Color(0xFF0D9C00),
color: Color(0xFF0D9C00), ),
), ),
), ],
], ),
), Text("Credited",style: TextStyle(
Text("Credited"), fontFamily: "JakartaMedium"
], ),),
],
),
), ),
), ),
), SizedBox(width: 10),
SizedBox(width: 10), Expanded(
Expanded( child: Container(
child: Container( padding: EdgeInsets.symmetric(
padding: EdgeInsets.symmetric( horizontal: 15,
horizontal: 15, vertical: 15,
vertical: 15, ),
), decoration: BoxDecoration(
decoration: BoxDecoration( color: Color(0xFFFFEFEF),
color: Color(0xFFFFEFEF), borderRadius: BorderRadius.circular(16),
borderRadius: BorderRadius.circular(16), ),
), child: Column(
child: Column( crossAxisAlignment: CrossAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ Row(
Row( crossAxisAlignment: CrossAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center, children: [
children: [ Text(
Text( "₹",
"₹", style: TextStyle(
style: TextStyle( height: 1,
height: 1, color: Color(0xFFED3424),
color: Color(0xFFED3424), ),
), ),
), Text(
Text( "${provider.totlDetails.debitAmount??0.00}",
"${provider.totlDetails.debitAmount}", style: TextStyle(
style: TextStyle( fontSize: 30,
fontSize: 30, height: 1,
height: 1, color: Color(0xFFED3424),
color: Color(0xFFED3424), ),
), ),
), ],
], ),
), Text("Debited",style: TextStyle(
Text("Debited"), fontFamily: "JakartaMedium"
], )),
],
),
), ),
), ),
), ],
], ),
), ),
), ListView.builder(
ListView.builder( physics: NeverScrollableScrollPhysics(),
physics: NeverScrollableScrollPhysics(), shrinkWrap: true,
shrinkWrap: true, itemCount: groupedData.keys.length,
itemCount: groupedData.keys.length, itemBuilder: (context, index) {
itemBuilder: (context, index) { String date = groupedData.keys.elementAt(index);
String date = groupedData.keys.elementAt(index); List<HistoryList> items = groupedData[date]!;
List<HistoryList> items = groupedData[date]!;
return Container( return Container(
padding: EdgeInsets.symmetric(vertical: 5), padding: EdgeInsets.symmetric(vertical: 5),
margin: EdgeInsets.symmetric(horizontal: 10), margin: EdgeInsets.symmetric(horizontal: 10),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Container( Container(
padding: EdgeInsets.only(bottom: 5), padding: EdgeInsets.only(bottom: 5),
child: Text( child: Text(
date, date,
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
color: Color(0xFF818181), fontFamily: "JakartaMedium",
color: Color(0xFF818181),
),
), ),
), ),
), ...items.map((item) {
...items.map((item) { String part1 =
String part1 = item.description!.split(' (').first;
item.description!.split(' (').first;
RegExp regExp = RegExp(r'\(([^)]+)\)'); RegExp regExp = RegExp(r'\(([^)]+)\)');
String? part2 = regExp String? part2 = regExp
.firstMatch(item.description!) .firstMatch(item.description!)
?.group(1); ?.group(1);
return Container( return Container(
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
horizontal: 10, horizontal: 10,
vertical: 10, vertical: 10,
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
), ),
child: Row( child: Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceBetween, MainAxisAlignment.start,
children: [ children: [
Column( Expanded(
crossAxisAlignment: flex:1,
CrossAxisAlignment.start, child: SizedBox(
children: [ child: item.transactionType == "Credit"
Text(part1), ? Image.asset(
Text( "assets/images/trans_credit.png",
"${part2}", height: 45,
style: TextStyle( width: 45,
color: Color(0xFF818181), fit: BoxFit.contain,
), )
), : Image.asset(
], "assets/images/trans_debit.png",
), height: 45,
width: 45,
RichText( fit: BoxFit.contain,
text: TextSpan(
children: [
TextSpan(
text:
item.transactionType == "Credit"
? "+"
: "-",
style: TextStyle(
color:
item.transactionType ==
"Credit"
? Color(0xFF0D9C00)
: Color(0xFFED3424),
fontSize: 16,
fontFamily: "Lexend",
), ),
),
),
SizedBox(width: 10,),
Expanded(
flex:5,
child: SizedBox(
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(part1,style: TextStyle(
fontFamily: "JakartaMedium"
),),
Text(
"${part2}",
style: TextStyle(
color: Color(0xFF818181),
),
),
],
), ),
TextSpan( ),
text: "₹${item.amount!}", ),
style: TextStyle( Spacer(),
color: Expanded(
item.transactionType == flex: 2,
"Credit" child: SizedBox(
? Color(0xFF0D9C00) child: RichText(
: Color(0xFFED3424), text: TextSpan(
fontSize: 16, children: [
fontFamily: "Lexend", TextSpan(
text: item.transactionType ==
"Credit"
? "+":"-",
style: TextStyle(
color: Color(0xFF2D2D2D),
fontSize: 14,
fontFamily: "JakartaRegular",
),
),
TextSpan(
text: "₹${item.amount!}",
style: TextStyle(
color: Color(0xFF2D2D2D),
fontSize: 14,
fontFamily: "JakartaMedium",
),
),
],
), ),
), ),
], ),
), ),
), ],
], ),
), );
); }).toList(),
}).toList(), ],
], ),
), );
); },
}, ),
), ],
], ),
), ),
), ),
), ),
......
...@@ -58,389 +58,419 @@ class _PaymentdetailsState extends State<Paymentdetails> { ...@@ -58,389 +58,419 @@ class _PaymentdetailsState extends State<Paymentdetails> {
// Debug prints to inspect contactsDropDown and selectContact // Debug prints to inspect contactsDropDown and selectContact
debugPrint("contactsDropDown: ${provider.contactsDropDown}"); debugPrint("contactsDropDown: ${provider.contactsDropDown}");
debugPrint("selectContact: ${provider.selectContact}"); debugPrint("selectContact: ${provider.selectContact}");
return Scaffold( return WillPopScope(
appBar: appbar(context, "Payment Details"), onWillPop: () => onBackPressed(context),
backgroundColor: AppColors.scaffold_bg_color, child: Scaffold(
body: Container(
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), resizeToAvoidBottomInset: true,
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 10), appBar: appbar(context, "Payment Details"),
decoration: BoxDecoration( backgroundColor: AppColors.scaffold_bg_color,
color: Colors.white, body: Container(
borderRadius: BorderRadius.circular(20) padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10),
), margin: EdgeInsets.symmetric(horizontal: 10, vertical: 10),
child: SingleChildScrollView( decoration: BoxDecoration(
child: Column( color: Colors.white,
crossAxisAlignment: CrossAxisAlignment.start, borderRadius: BorderRadius.circular(20)
children: [ ),
Container( child: SingleChildScrollView(
padding: EdgeInsets.symmetric(vertical: 5), child: Column(
child: Text("${widget.name}", crossAxisAlignment: CrossAxisAlignment.start,
style: TextStyle(color: AppColors.app_blue),)), children: [
SizedBox(height: 10,), Container(
Text("Phone Number"), padding: EdgeInsets.symmetric(vertical: 5),
DropdownButtonHideUnderline( child: Text("${widget.name}",
child: Row( style: TextStyle(
children: [ fontFamily: "JakartaMedium",
Expanded( color: AppColors.app_blue),)),
child: DropdownButton2<Contacts>( SizedBox(height: 10,),
isExpanded: true, Padding(
hint: const Row( padding: const EdgeInsets.only(bottom: 5.0),
children: [ child: Text("Phone Number"),
Expanded( ),
child: Text( DropdownButtonHideUnderline(
'Select Phone Number', child: Row(
style: TextStyle( children: [
fontSize: 14, Expanded(
), child: DropdownButton2<Contacts>(
overflow: TextOverflow.ellipsis, isExpanded: true,
), hint: const Row(
), children: [
], Expanded(
), child: Text(
items: [ 'Select Phone Number',
...provider.contactsDropDown.map((contacts) { style: TextStyle(
return DropdownMenuItem<Contacts>( fontSize: 14,
value: contacts,
// You can use the entire object, but we need to ensure it's unique
child: Column(
crossAxisAlignment: CrossAxisAlignment
.start,
children: [
Text(
contacts.name ?? "",
maxLines: 1,
style: const TextStyle(
fontSize: 12,
),
overflow: TextOverflow.ellipsis,
),
Text(
contacts.mob1 ?? "",
style: const TextStyle(
fontSize: 12,
),
overflow: TextOverflow.ellipsis,
), ),
], overflow: TextOverflow.ellipsis,
),
), ),
); ],
}).toList(), ),
DropdownMenuItem<Contacts>( items: [
value: null, ...provider.contactsDropDown.map((contacts) {
// No value associated with the button return DropdownMenuItem<Contacts>(
enabled: false, value: contacts,
// To disable selecting this item // You can use the entire object, but we need to ensure it's unique
child: InkWell( child: Column(
onTap: () { crossAxisAlignment: CrossAxisAlignment
_addContactSheet(context);
},
child: Container(
padding: const EdgeInsets.symmetric(
vertical: 12, horizontal: 14),
child: Row(
mainAxisAlignment: MainAxisAlignment
.start, .start,
children: const [ children: [
Text( Text(
'Add Contact', contacts.name ?? "",
style: TextStyle(fontSize: 14, maxLines: 1,
color: Colors.blue), style: const TextStyle(
fontSize: 12,
),
overflow: TextOverflow.ellipsis,
),
Text(
contacts.mob1 ?? "",
style: const TextStyle(
fontSize: 12,
),
overflow: TextOverflow.ellipsis,
), ),
], ],
), ),
);
}).toList(),
DropdownMenuItem<Contacts>(
value: null,
// No value associated with the button
enabled: false,
// To disable selecting this item
child: InkWell(
onTap: () {
_addContactSheet(context);
},
child: Container(
decoration: BoxDecoration(
border: Border.all(
color: AppColors.app_blue,
width: 0.5
),
borderRadius: BorderRadius.circular(12)
),
padding: const EdgeInsets.symmetric(
vertical: 12, horizontal: 14),
child: Row(
mainAxisAlignment: MainAxisAlignment
.center,
children: const [
Text(
'Add Contact',
style: TextStyle(fontSize: 14,
color: Colors.blue),
),
],
),
),
), ),
), ),
), ],
], value: provider.selectContact,
value: provider.selectContact, // The selected value is now the entire 'Contacts' object
// The selected value is now the entire 'Contacts' object onChanged: (Contacts? value) {
onChanged: (Contacts? value) { if (value != null) {
if (value != null) { if (provider.contactsDropDown.isNotEmpty) {
if (provider.contactsDropDown.isNotEmpty) { provider.selectContact =
provider.selectContact = value; // Set the selected contact
value; // Set the selected contact provider.contact = value.name ??
provider.contact = value.name ?? ""; // Update the contact name
""; // Update the contact name provider.contactID = value.mob1 ??
provider.contactID = value.mob1 ?? ""; // Update the contact ID
""; // Update the contact ID debugPrint("Selected Contact: ${value
debugPrint("Selected Contact: ${value .name}, Phone: ${value.mob1}");
.name}, Phone: ${value.mob1}"); }
} }
} },
}, buttonStyleData: ButtonStyleData(
buttonStyleData: ButtonStyleData( height: 50,
height: 50, width: 160,
width: 160, padding: const EdgeInsets.only(
padding: const EdgeInsets.only( left: 14, right: 14),
left: 14, right: 14), decoration: BoxDecoration(
decoration: BoxDecoration( borderRadius: BorderRadius.circular(14),
borderRadius: BorderRadius.circular(14), color: AppColors.text_field_color,
color: AppColors.text_field_color, ),
), ),
), iconStyleData: const IconStyleData(
iconStyleData: const IconStyleData( icon: Icon(
icon: Icon( Icons.keyboard_arrow_down_sharp,
Icons.keyboard_arrow_down_sharp, ),
iconSize: 12,
iconEnabledColor: Color(0xFF2D2D2D),
iconDisabledColor: Colors.grey,
), ),
iconSize: 12, dropdownStyleData: DropdownStyleData(
iconEnabledColor: Color(0xFF2D2D2D), maxHeight: 200,
iconDisabledColor: Colors.grey, width: 280,
), decoration: BoxDecoration(
dropdownStyleData: DropdownStyleData( borderRadius: BorderRadius.circular(14),
maxHeight: 200, color: AppColors.text_field_color,
width: 280, ),
decoration: BoxDecoration( scrollbarTheme: ScrollbarThemeData(
borderRadius: BorderRadius.circular(14), radius: const Radius.circular(15),
color: AppColors.text_field_color, thickness: MaterialStateProperty.all<double>(
6),
thumbVisibility: MaterialStateProperty.all<
bool>(true),
),
), ),
scrollbarTheme: ScrollbarThemeData( menuItemStyleData: const MenuItemStyleData(
radius: const Radius.circular(15), height: 60,
thickness: MaterialStateProperty.all<double>( padding: EdgeInsets.only(left: 14, right: 14),
6),
thumbVisibility: MaterialStateProperty.all<
bool>(true),
), ),
), ),
menuItemStyleData: const MenuItemStyleData(
height: 60,
padding: EdgeInsets.only(left: 14, right: 14),
),
), ),
), ],
], ),
), ),
), SizedBox(height: 10,),
SizedBox(height: 10,), Padding(
Text("Complaint Type"), padding: const EdgeInsets.only(bottom: 5.0),
DropdownButtonHideUnderline( child: Text("Complaint Type"),
child: Row( ),
children: [ DropdownButtonHideUnderline(
Expanded( child: Row(
child: DropdownButton2<PaymentModeList>( children: [
isExpanded: true, Expanded(
hint: const Row( child: DropdownButton2<PaymentModeList>(
children: [ isExpanded: true,
Expanded( hint: const Row(
child: Text( children: [
'Select Complaint Type', Expanded(
style: TextStyle( child: Text(
fontSize: 14, 'Select Complaint Type',
style: TextStyle(
fontSize: 14,
),
overflow: TextOverflow.ellipsis,
), ),
overflow: TextOverflow.ellipsis,
), ),
), ],
], ),
), items: provider.paymentModeDropDown
items: provider.paymentModeDropDown .map((paymentMode) =>
.map((paymentMode) => DropdownMenuItem<PaymentModeList>(
DropdownMenuItem<PaymentModeList>( value: paymentMode,
value: paymentMode, child: Text(
child: Text( paymentMode.name ?? '',
paymentMode.name ?? '', style: const TextStyle(
style: const TextStyle( fontSize: 14,
fontSize: 14, ),
overflow: TextOverflow.ellipsis,
), ),
overflow: TextOverflow.ellipsis, ))
), .toList(),
)) value: provider.selectPaymentMode,
.toList(), onChanged: (PaymentModeList? value) {
value: provider.selectPaymentMode, if (value != null) {
onChanged: (PaymentModeList? value) { if (provider.paymentModeDropDown.isNotEmpty) {
if (value != null) { provider.selectPaymentMode = value;
if (provider.paymentModeDropDown.isNotEmpty) { print(
provider.selectPaymentMode = value; "Selected Complaint Type: ${value
print( .name}, ID: ${value.id}");
"Selected Complaint Type: ${value provider.PaymentMode = value?.name;
.name}, ID: ${value.id}"); provider.paymentModeID = value?.id;
provider.PaymentMode = value?.name; print("hfjkshfg" +
provider.paymentModeID = value?.id; provider.paymentModeID.toString());
print("hfjkshfg" + }
provider.paymentModeID.toString());
} }
} },
}, buttonStyleData: ButtonStyleData(
buttonStyleData: ButtonStyleData( height: 50,
height: 50, width: MediaQuery
width: MediaQuery .of(context)
.of(context) .size
.size .width,
.width, padding: const EdgeInsets.only(
padding: const EdgeInsets.only( left: 14, right: 14),
left: 14, right: 14), decoration: BoxDecoration(
decoration: BoxDecoration( borderRadius: BorderRadius.circular(14),
borderRadius: BorderRadius.circular(14), color: AppColors.text_field_color,
color: AppColors.text_field_color, ),
), ),
), iconStyleData: const IconStyleData(
iconStyleData: const IconStyleData( icon: Icon(
icon: Icon( Icons.keyboard_arrow_down,
Icons.keyboard_arrow_down, ),
iconSize: 12,
iconEnabledColor: Color(0xFF2D2D2D),
iconDisabledColor: Colors.grey,
), ),
iconSize: 12, dropdownStyleData: DropdownStyleData(
iconEnabledColor: Color(0xFF2D2D2D), maxHeight: 200,
iconDisabledColor: Colors.grey, width: 340,
), decoration: BoxDecoration(
dropdownStyleData: DropdownStyleData( borderRadius: BorderRadius.circular(14),
maxHeight: 200, color: AppColors.text_field_color,
width: 340, ),
decoration: BoxDecoration( scrollbarTheme: ScrollbarThemeData(
borderRadius: BorderRadius.circular(14), radius: const Radius.circular(15),
color: AppColors.text_field_color, thickness:
MaterialStateProperty.all<double>(6),
thumbVisibility:
MaterialStateProperty.all<bool>(true),
),
), ),
scrollbarTheme: ScrollbarThemeData( menuItemStyleData: const MenuItemStyleData(
radius: const Radius.circular(15), height: 40,
thickness: padding:
MaterialStateProperty.all<double>(6), EdgeInsets.only(left: 14, right: 14),
thumbVisibility:
MaterialStateProperty.all<bool>(true),
), ),
), ),
menuItemStyleData: const MenuItemStyleData(
height: 40,
padding:
EdgeInsets.only(left: 14, right: 14),
),
), ),
), ],
], ),
), ),
), SizedBox(height: 10,),
SizedBox(height: 10,), Padding(
Text("Amount"), padding: const EdgeInsets.only(bottom: 5.0),
Container( child: Text("Amount"),
height: 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius:
BorderRadius.circular(14),
), ),
child: Padding( Container(
padding: height: 50,
const EdgeInsets.fromLTRB(
10.0, 0.0, 10, 0), alignment: Alignment.center,
child: TextFormField( decoration: BoxDecoration(
controller: color: AppColors.text_field_color,
Amountcontroller, borderRadius:
keyboardType: BorderRadius.circular(14),
TextInputType.text, ),
decoration: InputDecoration( child: Padding(
padding:
hintText: const EdgeInsets.fromLTRB(
"Enter Amount", 10.0, 0.0, 10, 0),
hintStyle: TextStyle( child: TextFormField(
fontWeight: FontWeight.w400, controller:
color: Color(0xFFB4BEC0), Amountcontroller,
fontSize: 14 keyboardType:
TextInputType.text,
decoration: InputDecoration(
hintText:
"Enter Amount",
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14
),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
), ),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
), ),
), ),
), ),
), SizedBox(height: 10,),
SizedBox(height: 10,), Padding(
Text("Reference Number"), padding: const EdgeInsets.only(bottom: 5.0),
Container( child: Text("Reference Number"),
height: 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius:
BorderRadius.circular(14),
), ),
child: Padding( Container(
padding: height: 50,
const EdgeInsets.fromLTRB(
10.0, 0.0, 10, 0), alignment: Alignment.center,
child: TextFormField( decoration: BoxDecoration(
controller: color: AppColors.text_field_color,
Referencecontroller, borderRadius:
keyboardType: BorderRadius.circular(14),
TextInputType.text, ),
decoration: InputDecoration( child: Padding(
padding:
hintText: const EdgeInsets.fromLTRB(
"Enter Reference Number", 10.0, 0.0, 10, 0),
hintStyle: TextStyle( child: TextFormField(
fontWeight: FontWeight.w400, controller:
color: Color(0xFFB4BEC0), Referencecontroller,
fontSize: 14 keyboardType:
TextInputType.text,
decoration: InputDecoration(
hintText:
"Enter Reference Number",
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14
),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
), ),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
), ),
), ),
), ),
), SizedBox(height: 10,),
SizedBox(height: 10,), InkResponse(
InkResponse( onTap: () {
onTap: () { _showAttachmentSheet(context);
_showAttachmentSheet(context); },
}, child: Container(
child: Container( margin: EdgeInsets.symmetric(vertical: 10),
margin: EdgeInsets.symmetric(vertical: 10), height: 45,
height: 45, width: MediaQuery
width: MediaQuery .of(context)
.of(context) .size
.size .width,
.width, decoration: BoxDecoration(
decoration: BoxDecoration( color: Color(0xFFE6F6FF),
color: Color(0xFFE6F6FF), borderRadius: BorderRadius.circular(12),
borderRadius: BorderRadius.circular(12), border: Border.all(
border: Border.all( color: AppColors.app_blue, width: 0.5)
color: AppColors.app_blue, width: 0.5) ),
), child: Center(
child: Center( child: Text("Scan Document", style: TextStyle(
child: Text("Scan Document", style: TextStyle( fontFamily: "JakartaMedium",
color: AppColors.app_blue color: AppColors.app_blue
),), ),),
),
), ),
), ),
), ],
], ),
), ),
), ),
), floatingActionButtonLocation: FloatingActionButtonLocation
floatingActionButtonLocation: FloatingActionButtonLocation .centerFloat,
.centerFloat, floatingActionButton: InkWell(
floatingActionButton: InkWell( onTap: () {
onTap: () { provider.CheckValidations(
provider.CheckValidations( context, Referencecontroller.text, Amountcontroller.text);
context, Referencecontroller.text, Amountcontroller.text); if (provider.CollectionId != 0) {
if (provider.CollectionId != 0) { _showOTPSheetSheet(context);
_showOTPSheetSheet(context); }
} },
}, child: Container(
child: Container( alignment: Alignment.center,
alignment: Alignment.center, height: 45,
height: 45, margin: EdgeInsets.only(
margin: EdgeInsets.only( left: 5.0,
left: 5.0, right: 5.0,
right: 5.0, top: 5.0,
top: 5.0, bottom: 5.0,
bottom: 5.0, ),
), decoration: BoxDecoration(
decoration: BoxDecoration( color: AppColors.app_blue, //1487C9
color: AppColors.app_blue, //1487C9 borderRadius: BorderRadius.circular(15.0),
borderRadius: BorderRadius.circular(30.0), ),
), child: Center(
child: Center( child: Text(
child: Text( "Send OTP",
"Send OTP", textAlign: TextAlign.center,
textAlign: TextAlign.center, style: TextStyle(
style: TextStyle(color: Colors.white), fontSize: 15,
fontFamily: "JakartaMedium",
color: Colors.white),
),
), ),
), ),
), ),
......
...@@ -4,6 +4,7 @@ import 'package:generp/Notifiers/PendingComplaintsProvider.dart'; ...@@ -4,6 +4,7 @@ import 'package:generp/Notifiers/PendingComplaintsProvider.dart';
import 'package:generp/Utils/commonWidgets.dart'; import 'package:generp/Utils/commonWidgets.dart';
import 'package:generp/screens/serviceEngineer/PaymentDetails.dart'; import 'package:generp/screens/serviceEngineer/PaymentDetails.dart';
import 'package:generp/screens/serviceEngineer/VisitDetails.dart'; import 'package:generp/screens/serviceEngineer/VisitDetails.dart';
import 'package:generp/screens/serviceEngineer/scanComplaintDetails.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import '../../Utils/app_colors.dart'; import '../../Utils/app_colors.dart';
...@@ -36,176 +37,206 @@ class _PendingcomplaintsState extends State<Pendingcomplaints> { ...@@ -36,176 +37,206 @@ class _PendingcomplaintsState extends State<Pendingcomplaints> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Pendingcomplaintsprovider>( return Consumer<Pendingcomplaintsprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
return Scaffold( return WillPopScope(
backgroundColor: AppColors.scaffold_bg_color, onWillPop: () => onBackPressed(context),
appBar: AppBar( child: Scaffold(
automaticallyImplyLeading: false, resizeToAvoidBottomInset: true,
elevation: 2.0, backgroundColor: AppColors.scaffold_bg_color,
title: SizedBox( appBar: appbar2(
child: Row( context,
mainAxisAlignment: MainAxisAlignment.start, "Pending Complaints",
crossAxisAlignment: CrossAxisAlignment.center, InkResponse(
children: [ onTap: () {
InkResponse( Navigator.push(
onTap: () => Navigator.pop(context, true), context,
child: SvgPicture.asset( MaterialPageRoute(
"assets/svg/app_bar_back.svg", builder: (context) => Scancomplaintdetails(),
height: 25,
), ),
), );
Text( },
"Pending Complaints", child: SvgPicture.asset("assets/svg/scanner.svg"),
style: TextStyle(
fontSize: 16,
height: 1.1,
color: AppColors.semi_black,
),
),
Spacer(),
SvgPicture.asset("assets/svg/scanner.svg"),
],
),
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(
bottom: Radius.circular(30), // Adjust the radius as needed
), ),
), ),
), body: provider.technician_complaint_list.isNotEmpty?Container(
body: Container( child: ListView.builder(
child: ListView.builder( scrollDirection: Axis.vertical,
scrollDirection: Axis.vertical, shrinkWrap: true,
shrinkWrap: true, itemCount: provider.technician_complaint_list.length,
itemCount: provider.technician_complaint_list.length, padding: EdgeInsets.symmetric(
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), horizontal: 10,
vertical: 10,
),
itemBuilder: (context, index) { itemBuilder: (context, index) {
return Container( return Container(
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), padding: EdgeInsets.symmetric(
margin: EdgeInsets.symmetric(vertical: 5), horizontal: 10,
decoration: BoxDecoration( vertical: 10,
color: Colors.white, ),
borderRadius: BorderRadius.circular(20), margin: EdgeInsets.symmetric(vertical: 5),
), decoration: BoxDecoration(
child: Column( color: Colors.white,
crossAxisAlignment: CrossAxisAlignment.start, borderRadius: BorderRadius.circular(20),
children: [ ),
Row( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center, children: [
children: [ Row(
Expanded( crossAxisAlignment: CrossAxisAlignment.center,
flex: 1, mainAxisAlignment: MainAxisAlignment.center,
child: SvgPicture.asset( children: [
"assets/svg/se_block_head.svg", Expanded(
flex: 1,
child: SvgPicture.asset(
"assets/svg/se_block_head.svg",
),
), ),
), SizedBox(width: 5),
SizedBox(width: 5),
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment:
children: [ CrossAxisAlignment.start,
Text( children: [
"${provider.technician_complaint_list[index].contactName}", Text(
), "${provider.technician_complaint_list[index].contactName}",
Text( style: TextStyle(
"${provider.technician_complaint_list[index].companyName}", fontFamily: "JakartaMedium",
style: TextStyle(color: Color(0xFF818181)), ),
), ),
], Text(
), "${provider.technician_complaint_list[index].companyName}",
Spacer(), style: TextStyle(
Expanded( color: Color(0xFF818181),
flex: 1, fontSize: 14,
child: InkResponse( ),
onTap: () { ),
launch( ],
'tel://${provider.technician_complaint_list[index].mobileNo}', ),
); Spacer(),
}, Expanded(
child: SvgPicture.asset( flex: 1,
"assets/svg/se_call_customer.svg", child: InkResponse(
onTap: () {
launch(
'tel://${provider.technician_complaint_list[index].mobileNo}',
);
},
child: SvgPicture.asset(
"assets/svg/se_call_customer.svg",
color: Color(0xFF0D9C00),
height: 20,
width: 20,
),
), ),
), ),
), Expanded(
Expanded( flex: 1,
flex: 1, child: InkResponse(
child: InkResponse( onTap: () {
onTap: () { _showOptionsSheet(
_showOptionsSheet( context,
context, provider
provider .technician_complaint_list[index]
.technician_complaint_list[index] .companyName,
.companyName,
provider provider
.technician_complaint_list[index] .technician_complaint_list[index]
.genId, .genId,
provider provider
.technician_complaint_list[index] .technician_complaint_list[index]
.complaintId, .complaintId,
); );
}, },
child: Icon(Icons.more_vert), child: Icon(Icons.more_vert),
),
), ),
), ],
], ),
), Divider(thickness: 0.5, color: Color(0xFFD7D7D7)),
Divider(thickness: 0.5, color: Color(0xFFD7D7D7)), ...List.generate(3, (j) {
...List.generate(3, (j) { final textheads = [
final textheads = ["ID", "Generator Type", "Address"]; "ID",
final textSubheads = [ "Generator Type",
provider.technician_complaint_list[index].genId, "Address",
provider.technician_complaint_list[index].productName, ];
provider.technician_complaint_list[index].address, final textSubheads = [
]; provider
return Container( .technician_complaint_list[index]
padding: EdgeInsets.symmetric(vertical: 3), .genId,
child: Column( provider
crossAxisAlignment: CrossAxisAlignment.start, .technician_complaint_list[index]
.productName,
provider
.technician_complaint_list[index]
.address,
];
return Container(
padding: EdgeInsets.symmetric(vertical: 3),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Expanded(
flex: 1,
child: Text(
textheads[j].toString(),
style: TextStyle(
fontFamily: "JakartaMedium",
),
),
),
Expanded(
flex: 2,
child: Text(
textSubheads[j].toString(),
style: TextStyle(
color: Color(0xFF818181),
),
),
),
],
),
);
}),
InkResponse(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Visitdetails(
complaintID:
provider
.technician_complaint_list[index]
.complaintId,
),
),
);
},
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Text(textheads[j].toString()),
Text( Text(
textSubheads[j].toString(), "View Details",
style: TextStyle(color: Color(0xFF818181)), style: TextStyle(
color: AppColors.app_blue,
fontFamily: "JakartaMedium"
),
),
SizedBox(width: 5),
SvgPicture.asset(
"assets/svg/next_button.svg",
), ),
], ],
), ),
);
}),
InkResponse(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Visitdetails(
complaintID:
provider
.technician_complaint_list[index]
.complaintId,
),
),
);
},
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
"View Details",
style: TextStyle(color: AppColors.app_blue),
),
SizedBox(width: 5),
SvgPicture.asset("assets/svg/next_button.svg"),
],
), ),
), ],
], ),
), );
); },
}, ),
), ):Emptywidget(context),
), ),
); );
}, },
...@@ -310,10 +341,11 @@ class _PendingcomplaintsState extends State<Pendingcomplaints> { ...@@ -310,10 +341,11 @@ class _PendingcomplaintsState extends State<Pendingcomplaints> {
leading: SvgPicture.asset( leading: SvgPicture.asset(
"assets/svg/${assetnames[index]}.svg", "assets/svg/${assetnames[index]}.svg",
), ),
title: Text(Headingnames[index]), title: Text(Headingnames[index],style: TextStyle(
trailing: Icon( fontFamily: "JakartaMedium"
Icons.arrow_forward_ios_sharp, ),),
size: 16, trailing: SvgPicture.asset(
"assets/svg/arrow_right_new.svg",
), ),
); );
}), }),
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Utils/commonWidgets.dart';
import 'package:generp/screens/serviceEngineer/PaymentDetails.dart'; import 'package:generp/screens/serviceEngineer/PaymentDetails.dart';
import 'package:generp/screens/serviceEngineer/VisitDetails.dart'; import 'package:generp/screens/serviceEngineer/VisitDetails.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
...@@ -45,179 +46,235 @@ class _TodaymontlyvisistsState extends State<Todaymontlyvisists> { ...@@ -45,179 +46,235 @@ class _TodaymontlyvisistsState extends State<Todaymontlyvisists> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Todaymontlyvisitsprovider>( return Consumer<Todaymontlyvisitsprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
return Scaffold( return WillPopScope(
backgroundColor: AppColors.scaffold_bg_color, onWillPop: () => onBackPressed(context),
appBar: AppBar( child: Scaffold(
automaticallyImplyLeading: false, resizeToAvoidBottomInset: true,
elevation: 2.0, backgroundColor: AppColors.scaffold_bg_color,
title: SizedBox( appBar: appbar(context, provider.title),
child: Row( body:
mainAxisAlignment: MainAxisAlignment.start, provider.visitsList.isNotEmpty
crossAxisAlignment: CrossAxisAlignment.center, ? Container(
children: [ child: ListView.builder(
InkResponse( scrollDirection: Axis.vertical,
onTap: () => Navigator.pop(context, true), shrinkWrap: true,
child: SvgPicture.asset( itemCount: provider.visitsList.length,
"assets/svg/app_bar_back.svg", padding: EdgeInsets.symmetric(
height: 25, horizontal: 10,
), vertical: 10,
), ),
Text(
provider.title,
style: TextStyle(
fontSize: 16,
height: 1.1,
color: AppColors.semi_black,
),
),
Spacer(),
SvgPicture.asset("assets/svg/scanner.svg"),
],
),
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(
bottom: Radius.circular(30), // Adjust the radius as needed
),
),
),
body: Container(
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: provider.visitsList.length,
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10),
itemBuilder: (context, index) { itemBuilder: (context, index) {
return Container( return Container(
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10), padding: EdgeInsets.symmetric(
margin: EdgeInsets.symmetric(vertical: 5), horizontal: 10,
decoration: BoxDecoration( vertical: 10,
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Expanded(
flex: 1,
child: SvgPicture.asset(
"assets/svg/se_block_head.svg",
), ),
), margin: EdgeInsets.symmetric(vertical: 5),
SizedBox(width: 5), decoration: BoxDecoration(
color: Colors.white,
Column( borderRadius: BorderRadius.circular(20),
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"${provider.visitsList[index]
.companyName}",
),
Text("Gen Pvt. Ltd"),
],
),
Spacer(),
Expanded(
flex: 1,
child: InkResponse(
onTap: () {
launch(
'tel://${provider
.visitsList[index]
.mobileNo}',
);
},
child: SvgPicture.asset(
"assets/svg/se_call_customer.svg",
),
), ),
), child: Column(
// Expanded( crossAxisAlignment: CrossAxisAlignment.start,
// flex: 1, children: [
// child: InkResponse( Row(
// onTap: () { crossAxisAlignment: CrossAxisAlignment.center,
// _showOptionsSheet(context); mainAxisAlignment: MainAxisAlignment.center,
// }, children: [
// child: Icon(Icons.more_vert), Expanded(
// ), flex: 1,
// ), child: Container(
], padding: EdgeInsets.symmetric(
), horizontal: 10,
Divider(thickness: 0.5, color: Color(0xFFD7D7D7)), vertical: 10,
...List.generate(3, (j) { ),
final textheads = ["ID", "Generator Type", "Address"]; decoration: BoxDecoration(
final textSubheads = [ color: Color(0xFFE6F6FF),
provider.visitsList[index].genId, borderRadius: BorderRadius.circular(
provider.visitsList[index].productName, 8,
provider.visitsList[index].address, ),
]; ),
return Container( child: SvgPicture.asset(
padding: EdgeInsets.symmetric(vertical: 3), width: 30,
child: Column( height: 30,
crossAxisAlignment: CrossAxisAlignment.start, "assets/svg/se_block_head.svg",
children: [ ),
Text(textheads[j].toString()), ),
Text(textSubheads[j].toString()), ),
], SizedBox(width: 5),
),
);
}),
SizedBox(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
InkResponse( Column(
onTap: () { crossAxisAlignment:
Navigator.push(context, MaterialPageRoute( CrossAxisAlignment.start,
builder: (context) => children: [
Paymentdetails(accountName: "Generator", Text(
name: provider "${provider.visitsList[index].contactName ?? "-"}",
.visitsList[index].companyName, style: TextStyle(
genId: provider fontFamily: "JakartaMedium",
.visitsList[index].genId, ),
referenceID: provider ),
.visitsList[index].complaintId),)); Text(
}, "${provider.visitsList[index].companyName}",
child: SvgPicture.asset( style: TextStyle(
"assets/svg/se_payment_details.svg", color: Color(0xFF818181),
), ),
), ),
Spacer(), ],
InkResponse( ),
onTap: () { Spacer(),
Navigator.push(context, MaterialPageRoute( Expanded(
builder: (context) => flex: 1,
Visitdetails(complaintID: provider child: InkResponse(
.visitsList[index].complaintId),)); onTap: () {
}, launch(
child: Row( 'tel://${provider.visitsList[index].mobileNo}',
mainAxisAlignment: MainAxisAlignment.start, );
crossAxisAlignment: CrossAxisAlignment.center, },
children: [ child: SvgPicture.asset(
Text("View Details", style: TextStyle( "assets/svg/se_call_customer.svg",
color: AppColors.app_blue color: Color(0xFF0D9C00),
),), height: 20,
SizedBox(width: 5), width: 20,
SvgPicture.asset( ),
"assets/svg/next_button.svg", ),
),
// Expanded(
// flex: 1,
// child: InkResponse(
// onTap: () {
// _showOptionsSheet(context);
// },
// child: Icon(Icons.more_vert),
// ),
// ),
],
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Divider(
thickness: 0.5,
color: Color(0xFFD7D7D7),
), ),
], ),
), ...List.generate(3, (j) {
final textheads = [
"ID",
"Generator Type",
"Address",
];
final textSubheads = [
provider.visitsList[index].genId,
provider.visitsList[index].productName,
provider.visitsList[index].address,
];
return Container(
padding: EdgeInsets.symmetric(vertical: 3),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Expanded(
flex: 1,
child: Text(
textheads[j].toString(),
style: TextStyle(
fontFamily: "JakartaMedium",
),
),
),
Expanded(
flex: 2,
child: Text(
textSubheads[j].toString(),
style: TextStyle(
color: Color(0xFF818181),
),
),
),
],
),
);
}),
SizedBox(
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
InkResponse(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Paymentdetails(
accountName: "Generator",
name:
provider
.visitsList[index]
.companyName,
genId:
provider
.visitsList[index]
.genId,
referenceID:
provider
.visitsList[index]
.complaintId,
),
),
);
},
child: SvgPicture.asset(
"assets/svg/se_payment_details.svg",
),
),
Spacer(),
InkResponse(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Visitdetails(
complaintID:
provider
.visitsList[index]
.complaintId,
),
),
);
},
child: Row(
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.center,
children: [
Text(
"View Details",
style: TextStyle(
fontFamily: "JakartaMedium",
color: AppColors.app_blue,
),
),
SizedBox(width: 5),
SvgPicture.asset(
"assets/svg/next_button.svg",
),
],
),
),
],
),
),
],
), ),
], );
), },
), ),
], )
), : Emptywidget(context),
);
},
),
), ),
); );
}, },
...@@ -262,8 +319,10 @@ class _TodaymontlyvisistsState extends State<Todaymontlyvisists> { ...@@ -262,8 +319,10 @@ class _TodaymontlyvisistsState extends State<Todaymontlyvisists> {
), ),
title: Text("Payment Details"), title: Text("Payment Details"),
trailing: Icon( trailing: Icon(
Icons.arrow_forward_ios_sharp, size: 16,), Icons.arrow_forward_ios_sharp,
) size: 16,
),
),
], ],
), ),
), ),
......
...@@ -26,369 +26,388 @@ class _UpdatecomplaintsState extends State<Updatecomplaints> { ...@@ -26,369 +26,388 @@ class _UpdatecomplaintsState extends State<Updatecomplaints> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Pendingcomplaintsprovider>( return Consumer<Pendingcomplaintsprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
return Scaffold( return WillPopScope(
appBar: appbar(context, "Update Complaint"), onWillPop: () => onBackPressed(context),
backgroundColor: AppColors.scaffold_bg_color, child: Scaffold(
body: Container( resizeToAvoidBottomInset: true,
padding: EdgeInsets.symmetric(horizontal: 10,vertical: 10), appBar: appbar(context, "Update Complaint"),
decoration: BoxDecoration( backgroundColor: AppColors.scaffold_bg_color,
color: Colors.white, body: Container(
borderRadius: BorderRadius.circular(20) padding: EdgeInsets.symmetric(horizontal: 10,vertical: 10),
), decoration: BoxDecoration(
child: SingleChildScrollView( color: Colors.white,
child: Column( borderRadius: BorderRadius.circular(20)
crossAxisAlignment: CrossAxisAlignment.start, ),
mainAxisSize: MainAxisSize.min, child: SingleChildScrollView(
children: [ child: Column(
SizedBox(height: 15), crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
SizedBox(height: 15),
Text( Padding(
"Complaint Status", padding: const EdgeInsets.only(bottom: 5.0),
style: TextStyle( child: Text(
fontWeight: FontWeight.w400, "Complaint Status",
color: Colors.grey, style: TextStyle(
fontFamily: "JakartaMedium",
color: AppColors.semi_black,
),
),
), ),
), DropdownButtonHideUnderline(
Row( child: Row(
children: [ children: [
Expanded( Expanded(
child: DropdownButtonHideUnderline( child: DropdownButton2<String>(
child: DropdownButton2<String>( isExpanded: true,
isExpanded: true, hint: const Row(
hint: const Row( children: [
children: [ Expanded(
Expanded( child: Text(
child: Text( 'Select Complaint Status',
'Select Complaint Status', style: TextStyle(
style: TextStyle( fontSize: 14,
fontSize: 14, ),
overflow: TextOverflow.ellipsis,
), ),
overflow: TextOverflow.ellipsis,
), ),
), ],
], ),
), items: CompletedStatus.map(
items: CompletedStatus.map( (complaintStatus) =>
(complaintStatus) => DropdownMenuItem<String>(
DropdownMenuItem<String>( value: complaintStatus['name'],
value: complaintStatus['name'], child: Text(
child: Text( complaintStatus['name'] ?? '',
complaintStatus['name'] ?? '', style: const TextStyle(
style: const TextStyle( fontSize: 14,
fontSize: 14, ),
overflow: TextOverflow.ellipsis,
), ),
overflow: TextOverflow.ellipsis, )).toList(),
), value: provider.statusID,
)).toList(), onChanged: (value) {
value: provider.statusID, if (value != null) {
onChanged: (value) { provider.statusID = value;
if (value != null) { print("statusId:${provider.statusID}");
provider.statusID = value; }
print("statusId:${provider.statusID}"); },
} buttonStyleData: ButtonStyleData(
}, height: 50,
buttonStyleData: ButtonStyleData( width: 160,
height: 50, padding: const EdgeInsets.only(
width: MediaQuery.of(context).size.width, left: 14, right: 14),
padding: const EdgeInsets.only( decoration: BoxDecoration(
left: 14, right: 14), borderRadius: BorderRadius.circular(14),
decoration: BoxDecoration( color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14), ),
color: AppColors.text_field_color,
), ),
), iconStyleData: const IconStyleData(
iconStyleData: const IconStyleData( icon: Icon(
icon: Icon( Icons.keyboard_arrow_down_sharp,
Icons.keyboard_arrow_down_sharp, ),
iconSize: 14,
iconEnabledColor: Color(0xFF2D2D2D),
iconDisabledColor: Colors.grey,
), ),
iconSize: 14, dropdownStyleData: DropdownStyleData(
iconEnabledColor: Color(0xFF2D2D2D), maxHeight: 200,
iconDisabledColor: Colors.grey, width: 350,
), decoration: BoxDecoration(
dropdownStyleData: DropdownStyleData( borderRadius: BorderRadius.circular(14),
maxHeight: 200, color: AppColors.text_field_color,
width: 310, ),
decoration: BoxDecoration( scrollbarTheme: ScrollbarThemeData(
borderRadius: BorderRadius.circular(14), radius: const Radius.circular(15),
color: AppColors.text_field_color, thickness:
MaterialStateProperty.all<double>(6),
thumbVisibility:
MaterialStateProperty.all<bool>(true),
),
), ),
scrollbarTheme: ScrollbarThemeData( menuItemStyleData: const MenuItemStyleData(
radius: const Radius.circular(15), height: 40,
thickness: padding:
MaterialStateProperty.all<double>(6), EdgeInsets.only(left: 14, right: 14),
thumbVisibility:
MaterialStateProperty.all<bool>(true),
), ),
), ),
menuItemStyleData: const MenuItemStyleData(
height: 40,
padding:
EdgeInsets.only(left: 14, right: 14),
),
), ),
],
),
),
SizedBox(height: 5,),
Padding(
padding: const EdgeInsets.only(bottom: 5.0),
child: Text(
"FSR Number",
style: TextStyle(
fontFamily: "JakartaMedium",
color: AppColors.semi_black,
), ),
), ),
],
),
Text(
"FSR Number",
style: TextStyle(
fontWeight: FontWeight.w400,
color: Colors.grey,
), ),
), Container(
Container( height: 50,
height: 50,
alignment: Alignment.center, alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColors.text_field_color, color: AppColors.text_field_color,
borderRadius: borderRadius:
BorderRadius.circular(14), BorderRadius.circular(14),
), ),
child: Padding( child: Padding(
padding: padding:
const EdgeInsets.fromLTRB( const EdgeInsets.fromLTRB(
10.0, 0.0, 10, 0), 10.0, 0.0, 10, 0),
child: TextFormField( child: TextFormField(
controller: controller:
fsrNumberController, fsrNumberController,
keyboardType: keyboardType:
TextInputType.text, TextInputType.text,
decoration: InputDecoration( decoration: InputDecoration(
hintText: hintText:
"Enter FSR Number", "Enter FSR Number",
hintStyle: TextStyle( hintStyle: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0), color: Color(0xFFB4BEC0),
fontSize: 14 fontSize: 14
),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
), ),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
), ),
), ),
), ),
), SizedBox(height: 5,),
Row( Row(
children: [ children: [
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
horizontal: 20.0), horizontal: 5.0,vertical: 3),
child: Text( child: Text(
"Select Time", "Select Time",
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.w400, fontFamily: "JakartaMedium",
color: Colors.grey, color: AppColors.semi_black,
),
), ),
), ),
), ),
), Expanded(
Expanded( child: Padding(
child: Padding( padding: const EdgeInsets.symmetric(
padding: const EdgeInsets.symmetric( horizontal: 20.0),
horizontal: 20.0), child: Text(
child: Text( "Running Hours",
"Running Hours", style: TextStyle(
style: TextStyle( fontWeight: FontWeight.w400,
fontWeight: FontWeight.w400, color: AppColors.semi_black,
color: Colors.grey, ),
), ),
), ),
), ),
),
], ],
), ),
Row(
children: [ Row(
Expanded( children: [
child: Container( Expanded(
child: Container(
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius:
BorderRadius.circular(14),
),
child: InkWell(
onTap: () {
provider.selectTime(context);
},
child: Container(
alignment: Alignment.center,
height: 45,
margin:
EdgeInsets.only(
left: 15.0, right: 15.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(
15.0),
),
child: Row(children: [
Text(
provider.selectedTime.hour
.toString() +
":" +
provider.selectedTime.minute
.toString() ??
"Enter in Time",
textAlign: TextAlign.center,
style: TextStyle(
fontWeight: FontWeight.w400),
),
]),
),
)),
),
SizedBox(width: 10,),
Expanded(
child: Container(
height: 50,
alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColors.text_field_color, color: AppColors.text_field_color,
borderRadius: borderRadius:
BorderRadius.circular(14), BorderRadius.circular(14),
), ),
child: InkWell( child: Padding(
onTap: () { padding:
provider.selectTime(context); const EdgeInsets.fromLTRB(
}, 10.0, 0.0, 10, 0),
child: Container( child: TextFormField(
alignment: Alignment.center, controller:
height: 45, runningHoursController,
margin: keyboardType:
EdgeInsets.only( TextInputType.text,
left: 15.0, right: 15.0), decoration: InputDecoration(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(
15.0),
),
child: Row(children: [
Text( hintText:
provider.selectedTime.hour "Enter FSR Number",
.toString() + hintStyle: TextStyle(
":" + fontWeight: FontWeight.w400,
provider.selectedTime.minute color: Color(0xFFB4BEC0),
.toString() ?? fontSize: 14
"Enter in Time",
textAlign: TextAlign.center,
style: TextStyle(
fontWeight: FontWeight.w400),
), ),
]), enabledBorder:
), InputBorder.none,
)), focusedBorder:
), InputBorder.none,
SizedBox(width: 10,),
Expanded(
child: Container(
height: 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius:
BorderRadius.circular(14),
),
child: Padding(
padding:
const EdgeInsets.fromLTRB(
10.0, 0.0, 10, 0),
child: TextFormField(
controller:
runningHoursController,
keyboardType:
TextInputType.text,
decoration: InputDecoration(
hintText:
"Enter FSR Number",
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0),
fontSize: 14
), ),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
),
),
), ),
), ),
), ),
), ],
], ),
), InkResponse(
InkResponse( onTap: () {
onTap: () { _showAttachmentSheet(context);
_showAttachmentSheet(context); },
}, child: Container(
child: Container( margin: EdgeInsets.symmetric(vertical: 10),
margin: EdgeInsets.symmetric(vertical: 10), height: 45,
height: 45, width: MediaQuery
width: MediaQuery .of(context)
.of(context) .size
.size .width,
.width, decoration: BoxDecoration(
decoration: BoxDecoration( color: Color(0xFFE6F6FF),
color: Color(0xFFE6F6FF), borderRadius: BorderRadius.circular(12),
borderRadius: BorderRadius.circular(12), border: Border.all(
border: Border.all( color: AppColors.app_blue, width: 0.5)
color: AppColors.app_blue, width: 0.5) ),
), child: Center(
child: Center( child: Text("Scan Document", style: TextStyle(
child: Text("Scan Document", style: TextStyle( color: AppColors.app_blue
color: AppColors.app_blue ),),
),), ),
), ),
), ),
), Padding(
Text( padding: const EdgeInsets.only(bottom: 5.0),
"Feedback", child: Text(
style: TextStyle( "Feedback",
fontWeight: FontWeight.w400, style: TextStyle(
color: Colors.grey, fontFamily: "JakartaMedium",
color: AppColors.semi_black,
),
),
), ),
), Container(
Container( height: 150,
height: 150,
alignment: Alignment.center, alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColors.text_field_color, color: AppColors.text_field_color,
borderRadius: borderRadius:
BorderRadius.circular(14), BorderRadius.circular(14),
), ),
child: Padding( child: Padding(
padding: padding:
const EdgeInsets.fromLTRB( const EdgeInsets.fromLTRB(
10.0, 0.0, 10, 0), 10.0, 0.0, 10, 0),
child: TextFormField( child: TextFormField(
controller: controller:
feedbackController, feedbackController,
maxLines: 60, maxLines: 60,
keyboardType: keyboardType:
TextInputType.text, TextInputType.text,
decoration: InputDecoration( decoration: InputDecoration(
hintText: hintText:
"Enter Feedback", "Enter Feedback",
hintStyle: TextStyle( hintStyle: TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: Color(0xFFB4BEC0), color: Color(0xFFB4BEC0),
fontSize: 14 fontSize: 14
),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
), ),
enabledBorder:
InputBorder.none,
focusedBorder:
InputBorder.none,
),
),
), ),
), ),
),
], ],
),
), ),
), ),
), floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat, floatingActionButton: InkWell(
floatingActionButton: InkWell( onTap: () {
onTap: () { provider.UpdateComplaintAPIFunction(
provider.UpdateComplaintAPIFunction( context,
context, widget.ComplaintID,
widget.ComplaintID, feedbackController.text,
feedbackController.text, fsrNumberController.text,
fsrNumberController.text, runningHoursController.text,
runningHoursController.text, provider.statusID);
provider.statusID); },
}, child: Container(
child: Container( alignment: Alignment.center,
alignment: Alignment.center, height: 45,
height: 45, margin: EdgeInsets.only(
margin: EdgeInsets.only( left: 5.0,
left: 5.0, right: 5.0,
right: 5.0, top: 5.0,
top: 5.0, bottom: 5.0,
bottom: 5.0, ),
), decoration: BoxDecoration(
decoration: BoxDecoration( color: AppColors.app_blue, //1487C9
color: AppColors.app_blue, //1487C9 borderRadius: BorderRadius.circular(15.0),
borderRadius: BorderRadius.circular(30.0), ),
), child: Center(
child: Center( child: Text(
child: Text( "Submit",
"Submit", textAlign: TextAlign.center,
textAlign: TextAlign.center, style: TextStyle(
style: TextStyle(color: Colors.white), fontSize: 15,
fontFamily: "JakartaMedium",
color: Colors.white),
),
), ),
), ),
), ),
......
...@@ -37,299 +37,303 @@ class _VisitdetailsState extends State<Visitdetails> { ...@@ -37,299 +37,303 @@ class _VisitdetailsState extends State<Visitdetails> {
var customerDetails = provider.customerDetails; var customerDetails = provider.customerDetails;
var generatorDetails = provider.generatorDetails; var generatorDetails = provider.generatorDetails;
var complaintDetails = provider.complaintDetailsNew; var complaintDetails = provider.complaintDetailsNew;
return Scaffold( return WillPopScope(
appBar: appbar(context, "Visit Details"), onWillPop: () => onBackPressed(context),
backgroundColor: AppColors.scaffold_bg_color, child: Scaffold(
body: Container( resizeToAvoidBottomInset: true,
child: SingleChildScrollView( appBar: appbar(context, "Visit Details"),
child: Column( backgroundColor: AppColors.scaffold_bg_color,
crossAxisAlignment: CrossAxisAlignment.start, body: Container(
children: [ child: SingleChildScrollView(
Text("Customer Details"), child: Column(
Container( crossAxisAlignment: CrossAxisAlignment.start,
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 5), children: [
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10), Text("Customer Details"),
decoration: BoxDecoration( Container(
color: Colors.white, margin: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
borderRadius: BorderRadius.circular(20), padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10),
), decoration: BoxDecoration(
child: Column( color: Colors.white,
children: [ borderRadius: BorderRadius.circular(20),
Row( ),
children: [ child: Column(
Column( children: [
crossAxisAlignment: CrossAxisAlignment.start, Row(
children: List.generate(4, (j) { children: [
final textheads = [ Column(
"${customerDetails.cname}", crossAxisAlignment: CrossAxisAlignment.start,
"Mobile Number", children: List.generate(4, (j) {
"Contact Person Number", final textheads = [
"Mail ID", "${customerDetails.cname}",
]; "Mobile Number",
final textSubheads = [ "Contact Person Number",
"${customerDetails.aname}", "Mail ID",
"${customerDetails.mob1}", ];
"${customerDetails.mob2}", final textSubheads = [
"${customerDetails.mail}", "${customerDetails.aname}",
]; "${customerDetails.mob1}",
return Container( "${customerDetails.mob2}",
padding: EdgeInsets.symmetric(vertical: 3), "${customerDetails.mail}",
child: Container( ];
padding: EdgeInsets.symmetric( return Container(
vertical: 3, padding: EdgeInsets.symmetric(vertical: 3),
horizontal: 0, child: Container(
padding: EdgeInsets.symmetric(
vertical: 3,
horizontal: 0,
),
child: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
if (j == 0) ...[
SvgPicture.asset(
"assets/svg/se_block_head.svg",
),
SizedBox(width: 5),
],
Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(textheads[j].toString()),
SizedBox(
// height:45,
width:
MediaQuery.of(
context,
).size.width *
0.75,
child: Text(
textSubheads[j],
maxLines: 2,
overflow:
TextOverflow.ellipsis,
style: TextStyle(
color: Color(0xFF818181),
),
),
),
],
),
],
),
],
),
), ),
);
}),
),
],
),
],
),
),
Text("Generator Details"),
Container(
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column(
children: [
Row(
children: [
SvgPicture.asset("assetName"),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: List.generate(6, (j) {
final textheads = [
"Gen ID",
"Engine Number",
"Address",
"Product Name",
"Engine Model",
"Date Of Supply",
];
final textSubheads = [
"${generatorDetails.genHashId}",
"${generatorDetails.engineNo}",
"${generatorDetails.address}",
"${generatorDetails.spname}",
"${generatorDetails.engineModel}",
"${complaintDetails.dateOfSupply}",
];
return Container(
padding: EdgeInsets.symmetric(vertical: 3),
child: Column( child: Column(
children: [ children: [
Row( Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.spaceBetween, MainAxisAlignment.spaceBetween,
children: [ children: [
if (j == 0) ...[ Container(
SvgPicture.asset( padding: EdgeInsets.symmetric(
"assets/svg/se_block_head.svg", vertical: 3,
horizontal: 0,
), ),
SizedBox(width: 5), child: Column(
], crossAxisAlignment:
Column( CrossAxisAlignment.start,
crossAxisAlignment: children: [
CrossAxisAlignment.start, Text(textheads[j].toString()),
children: [ SizedBox(
Text(textheads[j].toString()), // height:45,
SizedBox( width:
// height:45, MediaQuery.of(
width: context,
MediaQuery.of( ).size.width *
context, 0.8,
).size.width * child: Text(
0.75, textSubheads[j],
child: Text( maxLines: 2,
textSubheads[j], overflow:
maxLines: 2, TextOverflow.ellipsis,
overflow: style: TextStyle(
TextOverflow.ellipsis, color: Color(0xFF818181),
style: TextStyle( ),
color: Color(0xFF818181),
), ),
), ),
), ],
], ),
), ),
], ],
), ),
], ],
), ),
), );
); }),
}), ),
), ],
], ),
), ],
], ),
), ),
),
Text("Generator Details"), Text("Complaint Details"),
Container( Container(
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 5), margin: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10), padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.circular(20), borderRadius: BorderRadius.circular(20),
), ),
child: Column( child: Column(
children: [ children: [
Row( Row(
children: [ children: [
SvgPicture.asset("assetName"), SvgPicture.asset("assetName"),
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: List.generate(6, (j) { children: List.generate(4, (j) {
final textheads = [ final textheads = [
"Gen ID", "Complaint ID",
"Engine Number", "Complaint Description",
"Address", "Opened Date",
"Product Name", "Complaint Type",
"Engine Model", ];
"Date Of Supply", final textSubheads = [
]; "${complaintDetails.complaintId}",
final textSubheads = [ "${complaintDetails.complaintDesc}",
"${generatorDetails.genHashId}", "${complaintDetails.openedDate}",
"${generatorDetails.engineNo}", "${complaintDetails.complaintType}",
"${generatorDetails.address}", ];
"${generatorDetails.spname}", return Container(
"${generatorDetails.engineModel}", padding: EdgeInsets.symmetric(vertical: 3),
"${complaintDetails.dateOfSupply}", child: Column(
]; children: [
return Container( Row(
padding: EdgeInsets.symmetric(vertical: 3), mainAxisAlignment:
child: Column( MainAxisAlignment.spaceBetween,
children: [ children: [
Row( Container(
mainAxisAlignment: padding: EdgeInsets.symmetric(
MainAxisAlignment.spaceBetween, vertical: 3,
children: [ horizontal: 0,
Container( ),
padding: EdgeInsets.symmetric( child: Column(
vertical: 3, crossAxisAlignment:
horizontal: 0, CrossAxisAlignment.start,
), children: [
child: Column( Text(textheads[j].toString()),
crossAxisAlignment: SizedBox(
CrossAxisAlignment.start, // height:45,
children: [ width:
Text(textheads[j].toString()), MediaQuery.of(
SizedBox( context,
// height:45, ).size.width *
width: 0.8,
MediaQuery.of( child: Text(
context, textSubheads[j],
).size.width * maxLines: 2,
0.8, overflow:
child: Text( TextOverflow.ellipsis,
textSubheads[j], style: TextStyle(
maxLines: 2, color: Color(0xFF818181),
overflow: ),
TextOverflow.ellipsis,
style: TextStyle(
color: Color(0xFF818181),
),
),
),
],
),
),
],
),
],
),
);
}),
),
],
),
],
),
),
Text("Complaint Details"),
Container(
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Column(
children: [
Row(
children: [
SvgPicture.asset("assetName"),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: List.generate(4, (j) {
final textheads = [
"Complaint ID",
"Complaint Description",
"Opened Date",
"Complaint Type",
];
final textSubheads = [
"${complaintDetails.complaintId}",
"${complaintDetails.complaintDesc}",
"${complaintDetails.openedDate}",
"${complaintDetails.complaintType}",
];
return Container(
padding: EdgeInsets.symmetric(vertical: 3),
child: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Container(
padding: EdgeInsets.symmetric(
vertical: 3,
horizontal: 0,
),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(textheads[j].toString()),
SizedBox(
// height:45,
width:
MediaQuery.of(
context,
).size.width *
0.8,
child: Text(
textSubheads[j],
maxLines: 2,
overflow:
TextOverflow.ellipsis,
style: TextStyle(
color: Color(0xFF818181),
), ),
), ),
), ],
], ),
), ),
), ],
], ),
), ],
], ),
), );
); }),
}), ),
), ],
], ),
), ],
], ),
), ),
),
SizedBox(height: 75), SizedBox(height: 75),
], ],
),
), ),
), ),
), floatingActionButton: Align(
floatingActionButton: Align( alignment: Alignment.bottomCenter,
alignment: Alignment.bottomCenter, child: InkWell(
child: InkWell( onTap: () {
onTap: () { Navigator.push(
Navigator.push( context,
context, MaterialPageRoute(
MaterialPageRoute( builder:
builder: (context) =>
(context) => Followupdetails(complaintID: widget.complaintID),
Followupdetails(complaintID: widget.complaintID), ),
);
},
child: Container(
alignment: Alignment.bottomCenter,
height: 45,
width: MediaQuery.of(context).size.width,
margin: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
color: AppColors.app_blue,
borderRadius: BorderRadius.circular(30.0),
), ),
); child: Center(
}, child: Text(
child: Container( "Followup Details",
alignment: Alignment.bottomCenter, textAlign: TextAlign.center,
height: 45, style: TextStyle(color: Colors.white),
width: MediaQuery.of(context).size.width, ),
margin: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration(
color: AppColors.app_blue,
borderRadius: BorderRadius.circular(30.0),
),
child: Center(
child: Text(
"Followup Details",
textAlign: TextAlign.center,
style: TextStyle(color: Colors.white),
), ),
), ),
), ),
), ),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
), ),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
); );
}, },
); );
......
import 'package:flutter/material.dart';
import 'package:generp/Notifiers/HomeScreenNotifier.dart';
import 'package:generp/Notifiers/InventoryProvider.dart';
import 'package:generp/Utils/commonWidgets.dart';
import 'package:provider/provider.dart';
import 'package:qr_code_scanner/qr_code_scanner.dart';
import '../../Utils/app_colors.dart';
class Scancomplaintdetails extends StatefulWidget {
const Scancomplaintdetails({super.key});
@override
State<Scancomplaintdetails> createState() => _ScancomplaintdetailsState();
}
class _ScancomplaintdetailsState extends State<Scancomplaintdetails> {
FocusNode partIDfocusNode = FocusNode();
TextEditingController partIDcontroller = TextEditingController();
@override
void initState() {
// TODO: implement initState
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
var inventoryProvider = Provider.of<InventoryProvider>(
context,
listen: false,
);
inventoryProvider.checkPermission1();
inventoryProvider.requestCameraPermission();
});
}
@override
Widget build(BuildContext context) {
return Consumer<InventoryProvider>(
builder: (context, provider, child) {
return WillPopScope(
onWillPop: () => onBackPressed(context),
child: Scaffold(
resizeToAvoidBottomInset: true,
backgroundColor: AppColors.scaffold_bg_color,
appBar: appbar(context, "Pending Complaints"),
body: Container(
decoration: BoxDecoration(color: Colors.black),
child: Column(
children: [
Spacer(),
Container(
height: 250,
child: QRView(
key: provider.scannerKey,
onQRViewCreated: (p0) {
provider.onQRViewCreated(p0, "pendingComplaints", context);
},
formatsAllowed: [BarcodeFormat.qrcode],
cameraFacing: CameraFacing.back,
overlay: QrScannerOverlayShape(
borderColor: AppColors.app_blue,
borderRadius: 20,
borderLength: 60,
borderWidth: 10,
cutOutSize: 250.0,
),
),
),
SizedBox(height: 25),
Text(
"Scan QR",
textAlign: TextAlign.center,
style: TextStyle(fontSize: 18, color: Colors.white),
),
Text(
"to open Complaints",
textAlign: TextAlign.center,
style: TextStyle(fontSize: 14, color: Colors.white),
),
Spacer(),
Text(
"or",
textAlign: TextAlign.center,
style: TextStyle(fontSize: 18, color: Colors.white),
),
InkResponse(
onTap: () async {
_showPartIdBottomSheet(context);
},
child: Text(
"Tap To Enter Generator ID",
textAlign: TextAlign.center,
style: TextStyle(fontSize: 14, color: Colors.white),
),
),
SizedBox(height: 50),
],
),
),
),
);
},
);
}
Future<void> _showPartIdBottomSheet(BuildContext context) {
return showModalBottomSheet(
useSafeArea: true,
isDismissible: true,
isScrollControlled: true,
showDragHandle: true,
useRootNavigator: true,
enableDrag: true,
context: context,
builder: (context) {
return StatefulBuilder(
builder: (context, setState) {
return SafeArea(
child: Padding(
padding: EdgeInsets.only(
bottom:
MediaQuery.of(
context,
).viewInsets.bottom, // This handles keyboard
),
child: Container(
margin: EdgeInsets.only(
bottom: 15,
left: 15,
right: 15,
top: 30,
),
child: Consumer2<InventoryProvider, HomescreenNotifier>(
builder: (context, provider, homeProvider, child) {
return SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
padding: EdgeInsets.symmetric(horizontal: 10),
alignment: Alignment.topLeft,
child: Text(
"Generator ID",
style: TextStyle(
color: Color(0xFF818181),
fontSize: 14,
),
),
),
SizedBox(height: 5,),
Container(
height: 48,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(20),
border:
partIDfocusNode.hasFocus
? Border.all(
color: AppColors.app_blue,
width: 0.5,
)
: null,
),
// alignment: Alignment.center,
margin: EdgeInsets.only(left: 5.0, right: 5.0),
child: Padding(
padding: const EdgeInsets.fromLTRB(
10.0,
0.0,
15,
0,
),
child: TextField(
controller: partIDcontroller,
keyboardType: TextInputType.emailAddress,
focusNode: partIDfocusNode,
textCapitalization: TextCapitalization.characters,
style: TextStyle(fontSize: 14),
onChanged: (value) {},
onTapOutside: (event) {
// Handle onTapOutside
FocusScope.of(context).unfocus();
},
decoration: InputDecoration(
isDense: true,
hintStyle: TextStyle(
fontWeight: FontWeight.w400,
fontSize: 14,
),
//contentPadding: EdgeInsets.fromLTRB(5.0, 10.0, 5.0, 10.0),
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
hintText: 'Enter Generator ID',
),
),
),
),
SizedBox(height: 15,),
InkWell(
onTap: () {
provider.LoadgeneratorComplaintHistoryApifunction(
homeProvider,
context,
"pendingComplaints",
partIDcontroller.text,
);
},
child: Container(
alignment: Alignment.center,
height: 45,
margin: EdgeInsets.only(
left: 5.0,
right: 5.0,
top: 5.0,
bottom: 5.0,
),
decoration: BoxDecoration(
color: AppColors.app_blue, //1487C9
borderRadius: BorderRadius.circular(15.0),
),
child: Center(
child: Text(
"Submit",
textAlign: TextAlign.center,
style: TextStyle(color: Colors.white),
),
),
),
),
],
),
);
},
),
),
),
);
},
);
},
);
}
}
...@@ -35,262 +35,286 @@ class _ServiceengineerdashboardState extends State<Serviceengineerdashboard> { ...@@ -35,262 +35,286 @@ class _ServiceengineerdashboardState extends State<Serviceengineerdashboard> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Serviceengineerdashboardprovider>( return Consumer<Serviceengineerdashboardprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
return Scaffold( return WillPopScope(
backgroundColor: AppColors.scaffold_bg_color, onWillPop: () => onBackPressed(context),
appBar: AppBar( child: Scaffold(
automaticallyImplyLeading: false, resizeToAvoidBottomInset: true,
elevation: 2.0, backgroundColor: AppColors.scaffold_bg_color,
title: SizedBox( appBar: AppBar(
child: Row( automaticallyImplyLeading: false,
mainAxisAlignment: MainAxisAlignment.start, elevation: 2.0,
crossAxisAlignment: CrossAxisAlignment.center, title: SizedBox(
children: [ child: Row(
InkResponse( mainAxisAlignment: MainAxisAlignment.start,
onTap: () => Navigator.pop(context, true), crossAxisAlignment: CrossAxisAlignment.center,
child: SvgPicture.asset( children: [
"assets/svg/app_bar_back.svg", InkResponse(
height: 25, onTap: () => Navigator.pop(context, true),
), child: SvgPicture.asset(
), "assets/svg/app_bar_back.svg",
Text( height: 25,
"Service Engineer", ),
style: TextStyle(
fontSize: 16,
height: 1.1,
color: AppColors.semi_black,
),
),
Spacer(),
Container(
height: 25,
width: 45,
decoration: BoxDecoration(
color: Color(0xFFFFF6E2),
borderRadius: BorderRadius.circular(20),
), ),
child: Row( InkResponse(
mainAxisAlignment: MainAxisAlignment.center, onTap: () => Navigator.pop(context,true),
children: [ child: Text(
SvgPicture.asset( "Service Engineer",
'assets/svg/engineer_rating.svg', style: TextStyle(
height: 15, fontSize: 16,
), height: 1.1,
SizedBox(width: 5), fontFamily: "JakartaSemiBold",
Text( color: AppColors.semi_black,
provider.avgRating.toString(),
style: TextStyle(fontSize: 14),
), ),
], ),
), ),
), Spacer(),
], Container(
height: 25,
width: 45,
decoration: BoxDecoration(
color: Color(0xFFFFF6E2),
borderRadius: BorderRadius.circular(20),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SvgPicture.asset(
'assets/svg/engineer_rating.svg',
height: 15,
),
SizedBox(width: 5),
Text(
provider.avgRating.toString(),
style: TextStyle(fontSize: 14),
),
],
),
),
],
),
), ),
), shape: RoundedRectangleBorder(
shape: RoundedRectangleBorder( borderRadius: BorderRadius.vertical(
borderRadius: BorderRadius.vertical( bottom: Radius.circular(30), // Adjust the radius as needed
bottom: Radius.circular(30), // Adjust the radius as needed ),
), ),
), ),
), body: Container(
body: Container( child: SingleChildScrollView(
child: SingleChildScrollView( child: Column(
child: Column( children: [
children: [ Container(
Container( margin: EdgeInsets.only(top: 0, bottom: 15),
margin: EdgeInsets.only(top: 0, bottom: 15), decoration: BoxDecoration(
decoration: BoxDecoration( color: Colors.white,
color: Colors.white, borderRadius: BorderRadius.vertical(
borderRadius: BorderRadius.vertical( bottom: Radius.circular(16),
bottom: Radius.circular(16), ),
), ),
), child: Column(
child: Column( children: [
children: [ InkResponse(
InkResponse( onTap: () {
onTap: () { Navigator.push(
Navigator.push( context,
context, MaterialPageRoute(
MaterialPageRoute( builder: (context) => Pendingcomplaints(),
builder: (context) => Pendingcomplaints(), ),
);
},
child: Container(
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 15,
), ),
); margin: EdgeInsets.symmetric(
}, horizontal: 10,
child: Container( vertical: 15,
padding: EdgeInsets.symmetric( ),
horizontal: 10, decoration: BoxDecoration(
vertical: 15, color: Color(0xFFFFEFEF),
), borderRadius: BorderRadius.circular(16),
margin: EdgeInsets.symmetric( ),
horizontal: 10, child: Row(
vertical: 15, mainAxisAlignment: MainAxisAlignment.center,
), children: [
decoration: BoxDecoration( Expanded(
color: Color(0xFFFFEFEF), child: SizedBox(
borderRadius: BorderRadius.circular(16), child: Column(
), crossAxisAlignment:
child: Row( CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center, children: [
children: [ Text(
Expanded( "${provider.pendingComplaints}",
child: SizedBox( style: TextStyle(
child: Column( fontSize: 30,
crossAxisAlignment: color: Color(0xFFED3424),
CrossAxisAlignment.center, ),
children: [
Text(
"${provider.pendingComplaints}",
style: TextStyle(
fontSize: 30,
color: Color(0xFFED3424),
), ),
), Text("Pending Complaints"),
Text("Pending Complaints"), ],
], ),
), ),
), ),
), ],
], ),
), ),
), ),
), ],
], ),
),
),
Container(
padding: EdgeInsets.only(left: 15),
alignment: Alignment.topLeft,
child: Text(
"Collections & Visits",
style: TextStyle(color: Color(0xFF818181), fontSize: 14),
),
),
Container(
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 15),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16),
), ),
Container(
child: GridView.builder( padding: EdgeInsets.only(left: 15),
padding: EdgeInsets.symmetric( alignment: Alignment.topLeft,
vertical: 15, child: Text(
horizontal: 10, "Collections & Visits",
style: TextStyle(color: Color(0xFF818181),
fontFamily: "JakartaMedium",
fontSize: 14),
), ),
itemCount: 4, ),
shrinkWrap: true, Container(
physics: NeverScrollableScrollPhysics(), margin: EdgeInsets.symmetric(horizontal: 10, vertical: 15),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( decoration: BoxDecoration(
crossAxisCount: 2, color: Colors.white,
crossAxisSpacing: 10, borderRadius: BorderRadius.circular(16),
mainAxisSpacing: 10,
childAspectRatio: 22 / 10,
), ),
itemBuilder: (context, index) {
final numbers = [
provider.monthlyPaymentCollectionAmount,
provider.paymentCollectionWalletBalanceAmount,
provider.thisMonthsVisits,
provider.todayVisits,
];
final names = [
"Month Collection",
"P.C. Wallet",
"Month Visits",
"Today Visits",
];
final List<int> colorCodes = [
0xFFEEFCFF,
0xFFE7FFE5,
0xFFF3EDFF,
0xFFFFF6F0,
];
final List<int> textColorCodes = [
0xFF1487C9,
0xFF0D9C00,
0xFF493272,
0xFF91481B,
];
return InkResponse(
onTap: () {
var route;
switch (index) {
case 0:
route = Monthlycollection();
break;
case 1:
route = Pcwallet();
break;
case 2:
route = Todaymontlyvisists(visitType: "Month");
break;
case 3:
route = Todaymontlyvisists(visitType: "Today");
break;
}
Navigator.push( child: GridView.builder(
context, padding: EdgeInsets.symmetric(
MaterialPageRoute(builder: (context) => route), vertical: 15,
); horizontal: 10,
}, ),
child: Container( itemCount: 4,
padding: EdgeInsets.only( shrinkWrap: true,
left: 15, physics: NeverScrollableScrollPhysics(),
top: 5, gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
bottom: 5, crossAxisCount: 2,
), crossAxisSpacing: 10,
decoration: BoxDecoration( mainAxisSpacing: 10,
color: Color(colorCodes[index]), childAspectRatio: 22 / 10,
borderRadius: BorderRadius.circular(20), ),
), itemBuilder: (context, index) {
child: Column( final numbers = [
crossAxisAlignment: CrossAxisAlignment.start, provider.monthlyPaymentCollectionAmount,
mainAxisAlignment: MainAxisAlignment.center, provider.paymentCollectionWalletBalanceAmount,
children: [ provider.thisMonthsVisits,
Text( provider.todayVisits,
numbers[index].toString(), ];
style: TextStyle( final names = [
fontSize: 30, "Month Collection",
color: Color(textColorCodes[index]), "P.C. Wallet",
"Month Visits",
"Today Visits",
];
final List<int> colorCodes = [
0xFFE7FFE5,
0xFFFFFCD5,
0xFFF3EDFF,
0xFFFFF6F0,
];
final List<int> textColorCodes = [
0xFF0D9C00,
0xFF605C00,
0xFF493272,
0xFF91481B,
];
return InkResponse(
onTap: () {
var route;
switch (index) {
case 0:
route = Monthlycollection();
break;
case 1:
route = Pcwallet();
break;
case 2:
route = Todaymontlyvisists(visitType: "Month");
break;
case 3:
route = Todaymontlyvisists(visitType: "Today");
break;
}
Navigator.push(
context,
MaterialPageRoute(builder: (context) => route),
);
},
child: Container(
padding: EdgeInsets.only(
left: 15,
top: 5,
bottom: 5,
),
decoration: BoxDecoration(
color: Color(colorCodes[index]),
borderRadius: BorderRadius.circular(12),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
children: [
Text("₹",style: TextStyle(
fontSize: 14,
color: Color(textColorCodes[index]),
),),
Padding(
padding: EdgeInsets.only(top: 5),
child: Text(
"${numbers[index].toString()}",
style: TextStyle(
fontSize: 27,
color: Color(textColorCodes[index]),
),
),
),
],
), ),
), Text(names[index],style: TextStyle(
Text(names[index]), color: Color(0xFF818181)
], ),),
],
),
), ),
), );
); },
},
),
),
InkResponse(
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => Nearbygenerators(),));
},
child: Container(
height: 60,
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
), ),
),
InkResponse(
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => Nearbygenerators(),));
},
child: Container(
height: 60,
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
child: Row( child: Row(
children: [ children: [
Expanded( Expanded(
flex: 1, flex: 1,
child: SvgPicture.asset( child: SvgPicture.asset(
"assets/svg/find_generator.svg", "assets/svg/find_generator.svg",
),
), ),
), Expanded(
Expanded( flex: 4,
flex: 4, child: Text("Find Nearby Generators"),
child: Text("Find Nearby Generators"), ),
), ],
], ),
), ),
), ),
), ],
], ),
), ),
), ),
), ),
......
...@@ -25,13 +25,17 @@ class _SplashState extends State<Splash> { ...@@ -25,13 +25,17 @@ class _SplashState extends State<Splash> {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
splashImage = Image.asset("assets/images/ic_splash.jpg"); splashImage = Image.asset("assets/images/ic_splash.jpg");
requestPermissions(); WidgetsBinding.instance.addPostFrameCallback((_) {
final spalshProvider = Provider.of<SplashVersionNotifier>( requestPermissions();
context, final spalshProvider = Provider.of<SplashVersionNotifier>(
listen: false, context,
); listen: false,
spalshProvider.initPackageInfo(); );
spalshProvider.handleVersionCheck(context); spalshProvider.initPackageInfo();
spalshProvider.handleVersionCheck(context);
},);
} }
void requestPermissions() async { void requestPermissions() async {
...@@ -139,6 +143,7 @@ class _SplashState extends State<Splash> { ...@@ -139,6 +143,7 @@ class _SplashState extends State<Splash> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
resizeToAvoidBottomInset: true,
body: Consumer<SplashVersionNotifier>( body: Consumer<SplashVersionNotifier>(
builder: (context, value, child) { builder: (context, value, child) {
return Container( return Container(
......
...@@ -104,7 +104,7 @@ class ApiCalling { ...@@ -104,7 +104,7 @@ class ApiCalling {
try { try {
final response = await post({}, getAppVersionUrl, {}); final response = await post({}, getAppVersionUrl, {});
if (response != null) { if (response != null) {
// print("${response.body}"); print("${response.body}");
return VersionsResponse.fromJson(jsonDecode(response.body)); return VersionsResponse.fromJson(jsonDecode(response.body));
} else { } else {
return null; return null;
...@@ -432,7 +432,7 @@ class ApiCalling { ...@@ -432,7 +432,7 @@ class ApiCalling {
}; };
final res = await post(data, genTrackerGeneratorDetailsUrl, {}); final res = await post(data, genTrackerGeneratorDetailsUrl, {});
if (res != null) { if (res != null) {
// debugPrint(res.body); debugPrint(res.body);
return loadGeneratorDetailsResponse.fromJson(jsonDecode(res.body)); return loadGeneratorDetailsResponse.fromJson(jsonDecode(res.body));
} else { } else {
debugPrint("Null Response"); debugPrint("Null Response");
......
...@@ -29,18 +29,10 @@ packages: ...@@ -29,18 +29,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: async name: async
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.13.0" version: "2.12.0"
background_location:
dependency: "direct main"
description:
name: background_location
sha256: fbb83ceb8cefcc6793f0a362f12773c28fc290a5e2c76cb593ee592ec7b6cb32
url: "https://pub.dev"
source: hosted
version: "0.13.0"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
...@@ -237,10 +229,10 @@ packages: ...@@ -237,10 +229,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: fake_async name: fake_async
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.3.3" version: "1.3.2"
ffi: ffi:
dependency: transitive dependency: transitive
description: description:
...@@ -860,26 +852,26 @@ packages: ...@@ -860,26 +852,26 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker name: leak_tracker
sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0" sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "11.0.1" version: "10.0.8"
leak_tracker_flutter_testing: leak_tracker_flutter_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_flutter_testing name: leak_tracker_flutter_testing
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.10" version: "3.0.9"
leak_tracker_testing: leak_tracker_testing:
dependency: transitive dependency: transitive
description: description:
name: leak_tracker_testing name: leak_tracker_testing
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.0.2" version: "3.0.1"
lints: lints:
dependency: transitive dependency: transitive
description: description:
...@@ -1481,10 +1473,10 @@ packages: ...@@ -1481,10 +1473,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vm_service name: vm_service
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "15.0.0" version: "14.3.1"
web: web:
dependency: transitive dependency: transitive
description: description:
......
...@@ -71,7 +71,6 @@ dependencies: ...@@ -71,7 +71,6 @@ dependencies:
cached_network_image: ^3.4.1 cached_network_image: ^3.4.1
geocoding: ^3.0.0 geocoding: ^3.0.0
webview_flutter_wkwebview: ^3.20.0 webview_flutter_wkwebview: ^3.20.0
background_location: ^0.13.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
...@@ -149,5 +148,29 @@ flutter: ...@@ -149,5 +148,29 @@ flutter:
fonts: fonts:
- asset: fonts/Lexend-Light.ttf - asset: fonts/Lexend-Light.ttf
- family: JakartaLight
fonts:
- asset: fonts/PlusJakartaSans-Light.ttf
- family: JakartaRegular
fonts:
- asset: fonts/PlusJakartaSans-Regular.ttf
- family: JakartaSemiBold
fonts:
- asset: fonts/PlusJakartaSans-SemiBold.ttf
- family: JakartaMedium
fonts:
- asset: fonts/PlusJakartaSans-Medium.ttf
- family: JakartaBold
fonts:
- asset: fonts/PlusJakartaSans-Bold.ttf
- family: JakartaExtraBold
fonts:
- asset: fonts/PlusJakartaSans-ExtraBold.ttf
# For details regarding fonts from package dependencies, # For details regarding fonts from package dependencies,
# see https://flutter.dev/to/font-from-package # see https://flutter.dev/to/font-from-package
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