This commit is contained in:
Surendiran 2025-07-07 15:53:46 +05:30
commit b7b17c928d
8 changed files with 674 additions and 453 deletions

View File

@ -59,7 +59,7 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
try { try {
print('10'); print('10');
final ticketID = widget.ticket_id; final ticketID = widget.ticket_id;
if(ticketID != '' || ticketID != null){ if (ticketID != '' || ticketID != null) {
return; return;
} }
final response = await apiService.getClaimsHistoryToApi( final response = await apiService.getClaimsHistoryToApi(
@ -69,7 +69,8 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
// isLoading = false; // isLoading = false;
}); });
setState(() { setState(() {
getClaimsHistoryList = List<Map<String, dynamic>>.from(response['data']); getClaimsHistoryList =
List<Map<String, dynamic>>.from(response['data']);
// originalData = getCDPolicies; // originalData = getCDPolicies;
// filteredData = List.from(originalData); // filteredData = List.from(originalData);
// print('filteredData'); // print('filteredData');
@ -367,7 +368,6 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
); );
} }
String _getStepTitle(int index) { String _getStepTitle(int index) {
switch (index) { switch (index) {
case 0: case 0:
@ -416,9 +416,9 @@ class _ClaimHistoryPopupState extends State<ClaimHistoryPopup> {
} }
} }
Widget _buildKeyValue(String title, String value) { Widget _buildKeyValue(String title, String value) {
final displayValue = (value == null || value.trim().isEmpty) ? 'N/A' : value; final displayValue =
(value == null || value.trim().isEmpty) ? 'N/A' : value;
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -466,4 +466,3 @@ class DottedLinePainter extends CustomPainter {
@override @override
bool shouldRepaint(CustomPainter oldDelegate) => false; bool shouldRepaint(CustomPainter oldDelegate) => false;
} }

View File

@ -32,7 +32,19 @@ class excelVerify extends StatefulWidget {
final String cardInsurer_name; final String cardInsurer_name;
final String cardPolicy_name; final String cardPolicy_name;
final String cardPolicy_ExpDate; final String cardPolicy_ExpDate;
const excelVerify({Key? key, required this.ClientId, required this.ClientPoliyId, required this.clientBranchId, required this.Token, required this.TokenType, required this.cardType, required this.cardPolicyNo, required this.cardInsurer_name, required this.cardPolicy_name, required this.cardPolicy_ExpDate}) : super(key: key); const excelVerify(
{Key? key,
required this.ClientId,
required this.ClientPoliyId,
required this.clientBranchId,
required this.Token,
required this.TokenType,
required this.cardType,
required this.cardPolicyNo,
required this.cardInsurer_name,
required this.cardPolicy_name,
required this.cardPolicy_ExpDate})
: super(key: key);
@override @override
State<excelVerify> createState() => _excelVerifyState(); State<excelVerify> createState() => _excelVerifyState();
@ -608,9 +620,11 @@ class _excelVerifyState extends State<excelVerify> {
// invalidRelationships = 0; // invalidRelationships = 0;
// dobAgeCheckCount = 0; // dobAgeCheckCount = 0;
// nonExcelFilteredData = []; // nonExcelFilteredData = [];
Navigator.pushNamed( // Navigator.pushNamed(
context, 'hrPolicyDetails', // context, 'hrPolicyDetails',
arguments: argumentsData); // arguments: argumentsData);
Navigator.pop(context);
}, },
child: Text( child: Text(
'Close', 'Close',

View File

@ -310,7 +310,7 @@ class _hrDashboardState extends State<hrDashboard>
print("hr_id -$hr_id"); print("hr_id -$hr_id");
print("token -$token"); print("token -$token");
// isLoading = true; isLoading = true;
// setState(() { // setState(() {
// _isLoading = true; // _isLoading = true;
// }); // });

View File

@ -20,6 +20,7 @@ import 'package:intl/intl.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:url_launcher/url_launcher.dart';
import 'customAppBar/customFooter.dart'; import 'customAppBar/customFooter.dart';
class hrPolicyDetails extends StatefulWidget { class hrPolicyDetails extends StatefulWidget {
@ -106,14 +107,14 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
print('10'); print('10');
final response = widget.TokenType == "post" final response = widget.TokenType == "post"
? await apiService.getEmployeeAndDependenceToApi( ? await apiService.getEmployeeAndDependenceToApi(widget.ClientId,
widget.ClientId, widget.ClientPoliyId, widget.clientBranchId, widget.Token) widget.ClientPoliyId, widget.clientBranchId, widget.Token)
: await apiService.getEmployeeAndDependenceToApiPre( : await apiService.getEmployeeAndDependenceToApiPre(widget.ClientId,
widget.ClientId, widget.ClientPoliyId, widget.clientBranchId, widget.Token); widget.ClientPoliyId, widget.clientBranchId, widget.Token);
if (response['status'] == 'success') { if (response['status'] == 'success') {
setState(() { setState(() {
// isLoading = false; isLoading = false;
}); });
setState(() { setState(() {
getCDPolicies = List<Map<String, dynamic>>.from(response['data']); getCDPolicies = List<Map<String, dynamic>>.from(response['data']);
@ -124,7 +125,7 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
}); });
} else { } else {
setState(() { setState(() {
// isLoading = false; isLoading = false;
}); });
// ToastHelper.showWarningToast( // ToastHelper.showWarningToast(
@ -133,7 +134,7 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
} }
} catch (e) { } catch (e) {
setState(() { setState(() {
// isLoading = false; isLoading = false;
}); });
print('Exception occurred: $e'); print('Exception occurred: $e');
} finally { } finally {
@ -143,6 +144,18 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
} }
} }
Future<void> _launchURL(String url) async {
final Uri uri = Uri.parse(url); // Parse the URL properly
print('_launchURL $uri');
if (uri != null) {
print('If $uri');
await launchUrl(uri, mode: LaunchMode.externalApplication);
} else {
print('else $uri');
throw 'Could not launch $url';
}
}
void search(String query) { void search(String query) {
print(query); print(query);
// Check if the query is empty // Check if the query is empty
@ -257,9 +270,15 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
// TODO: implement build // TODO: implement build
return Scaffold( return Scaffold(
appBar: CustomAppBar(), appBar: CustomAppBar(),
body: Container( backgroundColor: Color(0xFFEFF3F6),
color: Color(0xFFEFF3F6), body: Stack(children: [
padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 40), // color: Color(0xFFEFF3F6),
// padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 40),
SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Container(
padding: EdgeInsets.only(top: 30, bottom: 200, left: 50, right: 50),
child: Column( child: Column(
children: [ children: [
Container( Container(
@ -274,7 +293,8 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
IconButton( IconButton(
padding: EdgeInsets.zero, // Removes default padding padding:
EdgeInsets.zero, // Removes default padding
constraints: BoxConstraints(), constraints: BoxConstraints(),
onPressed: () { onPressed: () {
Navigator.pop(context); Navigator.pop(context);
@ -303,7 +323,8 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Text( Text(
"${widget.cardType} - ${widget.cardPolicyNo} " ?? '', "${widget.cardType} - ${widget.cardPolicyNo} " ??
'',
style: GoogleFonts.poppins( style: GoogleFonts.poppins(
color: Colors.black, color: Colors.black,
fontSize: 14, fontSize: 14,
@ -378,18 +399,21 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => builder: (context) => excelVerify(
excelVerify( ClientId:
ClientId: widget.ClientId, // <-- from map widget.ClientId, // <-- from map
ClientPoliyId: widget.ClientPoliyId, ClientPoliyId: widget.ClientPoliyId,
clientBranchId: widget.clientBranchId, clientBranchId: widget.clientBranchId,
Token: widget.Token, Token: widget.Token,
TokenType: widget.TokenType, TokenType: widget.TokenType,
cardType: widget.cardType, cardType: widget.cardType,
cardPolicyNo: widget.cardPolicyNo, cardPolicyNo: widget.cardPolicyNo,
cardInsurer_name: widget.cardInsurer_name, cardInsurer_name:
cardPolicy_name: widget.cardPolicy_name, widget.cardInsurer_name,
cardPolicy_ExpDate: widget.cardPolicy_ExpDate, cardPolicy_name:
widget.cardPolicy_name,
cardPolicy_ExpDate:
widget.cardPolicy_ExpDate,
// Token: widget.Token, // Token: widget.Token,
// ClientId: widget.ClientId, // ClientId: widget.ClientId,
@ -405,7 +429,8 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
}, },
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
backgroundColor: Color(0xFFE26728), backgroundColor: Color(0xFFE26728),
padding: EdgeInsets.all(10), // Internal padding padding:
EdgeInsets.all(10), // Internal padding
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular( borderRadius: BorderRadius.circular(
10), // Border radius 10), // Border radius
@ -435,7 +460,8 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
}, },
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
backgroundColor: Color(0xFFE26728), backgroundColor: Color(0xFFE26728),
padding: EdgeInsets.all(10), // Internal padding padding:
EdgeInsets.all(10), // Internal padding
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular( borderRadius: BorderRadius.circular(
10), // Border radius 10), // Border radius
@ -480,6 +506,27 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
], ],
), ),
), ),
),
if (isLoading)
Container(
color: Color(0x98FFFCE5), // Semi-transparent background
child: Center(
child: // Your GIF loader widget
Image.asset(
height: 60,
width: 60,
'assets/nhance-loader.gif'), // Adjust path to your GIF loader
),
),
Align(
alignment: Alignment.bottomCenter,
child: Container(
width: double.infinity, // Make the footer full width
child: CustomFooter(),
),
),
]),
); );
} }
@ -749,8 +796,11 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
if (item['ecard_download_link'] != null)
GestureDetector( GestureDetector(
onTap: () {}, onTap: () {
_launchURL(item['ecard_download_link']);
},
child: Container( child: Container(
height: 35, height: 35,
width: 35, width: 35,
@ -759,7 +809,8 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
child: Padding( child: Padding(
padding: EdgeInsets.all(6), // You can adjust this value padding: EdgeInsets.all(
6), // You can adjust this value
child: Image.asset( child: Image.asset(
'assets/credit_card.png', 'assets/credit_card.png',
fit: BoxFit.contain, fit: BoxFit.contain,
@ -780,15 +831,14 @@ class _HrPolicyDetailsState extends State<hrPolicyDetails>
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
child: Padding( child: Padding(
padding: EdgeInsets.all(6), // You can adjust this value padding: EdgeInsets.all(
6), // You can adjust this value
child: Image.asset( child: Image.asset(
'assets/claim.png', 'assets/claim.png',
fit: BoxFit.contain, fit: BoxFit.contain,
), ),
), ),
), ),
), ),
], ],
), ),

View File

@ -30,6 +30,7 @@ class _ActivePolicieState extends State<ActivePolicies> {
dynamic getCardArrays = []; dynamic getCardArrays = [];
int selectedIndex = 1; int selectedIndex = 1;
int stausVal = 1; int stausVal = 1;
bool isLoading = false;
// List<Map<String, dynamic>> getCardArrays = [ // List<Map<String, dynamic>> getCardArrays = [
// { // {
@ -108,7 +109,7 @@ class _ActivePolicieState extends State<ActivePolicies> {
print("hr_id -$hr_id"); print("hr_id -$hr_id");
print("token -$token"); print("token -$token");
// isLoading = true; isLoading = true;
// setState(() { // setState(() {
// _isLoading = true; // _isLoading = true;
// }); // });
@ -124,7 +125,7 @@ class _ActivePolicieState extends State<ActivePolicies> {
// clintID!, clintBranchId!, hr_id, token); // clintID!, clintBranchId!, hr_id, token);
print('IN1'); print('IN1');
if (response['status'] == 'success') { if (response['status'] == 'success') {
// isLoading = false; isLoading = false;
setState(() { setState(() {
print('response'); print('response');
print(response['data']); print(response['data']);
@ -141,6 +142,7 @@ class _ActivePolicieState extends State<ActivePolicies> {
print('IN2'); print('IN2');
print("getCardArrays9 - $getCardArrays"); print("getCardArrays9 - $getCardArrays");
} else { } else {
isLoading = false;
print('API request failed with status'); print('API request failed with status');
setState(() { setState(() {
getCardArrays = []; getCardArrays = [];
@ -211,10 +213,21 @@ class _ActivePolicieState extends State<ActivePolicies> {
), ),
], ],
), ),
SizedBox( const SizedBox(
height: 15, height: 15,
), ),
Column( isLoading
? Expanded(
// color: Color(0x98FFFCE5), // Semi-transparent background
child: Center(
child: // Your GIF loader widget
Image.asset(
height: 60,
width: 60,
'assets/nhance-loader.gif'), // Adjust path to your GIF loader
),
)
: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Container( Container(
@ -237,7 +250,8 @@ class _ActivePolicieState extends State<ActivePolicies> {
) )
: GridView.builder( : GridView.builder(
itemCount: getCardArrays.length, itemCount: getCardArrays.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4, crossAxisCount: 4,
crossAxisSpacing: 20, crossAxisSpacing: 20,
mainAxisSpacing: 20, mainAxisSpacing: 20,

View File

@ -85,7 +85,7 @@ class _CdPolicieState extends State<CdPolicies> {
Future<void> getCDPoliciesDetails() async { Future<void> getCDPoliciesDetails() async {
print('9'); print('9');
setState(() { setState(() {
// isLoading = true; isLoading = true;
}); });
try { try {
print('10'); print('10');
@ -93,7 +93,7 @@ class _CdPolicieState extends State<CdPolicies> {
widget.empClientId, widget.empHrId, widget.postToken); widget.empClientId, widget.empHrId, widget.postToken);
if (response['status'] == 'success') { if (response['status'] == 'success') {
setState(() { setState(() {
// isLoading = false; isLoading = false;
}); });
setState(() { setState(() {
getCDPolicies = List<Map<String, dynamic>>.from(response['data']); getCDPolicies = List<Map<String, dynamic>>.from(response['data']);
@ -104,7 +104,7 @@ class _CdPolicieState extends State<CdPolicies> {
}); });
} else { } else {
setState(() { setState(() {
// isLoading = false; isLoading = false;
}); });
// ToastHelper.showWarningToast( // ToastHelper.showWarningToast(
@ -113,12 +113,12 @@ class _CdPolicieState extends State<CdPolicies> {
} }
} catch (e) { } catch (e) {
setState(() { setState(() {
// isLoading = false; isLoading = false;
}); });
print('Exception occurred: $e'); print('Exception occurred: $e');
} finally { } finally {
setState(() { setState(() {
// _isLoading = false; _isLoading = false;
}); });
} }
} }
@ -268,33 +268,9 @@ class _CdPolicieState extends State<CdPolicies> {
], ],
), ),
SizedBox(height: 20), SizedBox(height: 20),
Row( isLoading
children: [ ? Expanded(
Expanded( // color: Color(0x98FFFCE5), // semi-transparent overlay
child: SingleChildScrollView(
child: _buildCDDataTable(context),
),
)
],
),
],
),
);
}
Widget _buildCDDataTable(BuildContext context) {
if (filteredData.isEmpty) {
return const SizedBox(
height: 50,
child: Center(child: Text('No available data')),
);
}
// Loader overlay
if (isLoading)
return Container(
color: Color(0x98FFFCE5), // semi-transparent overlay
child: Center( child: Center(
child: Image.asset( child: Image.asset(
'assets/nhance-loader.gif', 'assets/nhance-loader.gif',
@ -302,7 +278,42 @@ class _CdPolicieState extends State<CdPolicies> {
width: 60, width: 60,
), ),
), ),
)
: Expanded(
child: Row(
children: [
SingleChildScrollView(
child: _buildCDDataTable(context),
),
],
),
)
],
),
); );
}
Widget _buildCDDataTable(BuildContext context) {
// Loader overlay
if (filteredData.isEmpty) {
return const SizedBox(
height: 50,
child: Center(child: Text('No available data')),
);
}
// return ListView.builder(
// itemCount: _paginatedData.length + 2, // +1 for header, +1 for pagination
// itemBuilder: (context, index) {
// if (index == 0) return _buildHeader();
// if (index == _paginatedData.length + 1)
// return _buildPagination(context);
//
// final item = _paginatedData[index - 1];
// return _buildDataRow(item);
// },
// );
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -413,10 +424,111 @@ class _CdPolicieState extends State<CdPolicies> {
), ),
); );
}).toList(), }).toList(),
],
);
}
Row( Widget _buildDataRow(Map<String, dynamic> item) {
mainAxisAlignment: MainAxisAlignment.end, return Container(
padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 16),
margin: const EdgeInsets.only(top: 10),
decoration: BoxDecoration(
color: Color(0xFFE0F7F9),
border: const Border(
bottom: BorderSide(color: Color(0xFFD7E9EB), width: 1),
),
borderRadius: BorderRadius.circular(8),
),
child: Row(
children: [ children: [
Expanded(
flex: 4,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(item['insurer_name'] ?? '-', style: _dataBold),
],
),
),
Expanded(
flex: 4,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(item['cd_master_account_no'] ?? '-', style: _dataBold),
],
),
),
Expanded(
flex: 3,
child: Text("${item['balance'] ?? '0'}", style: _dataBold),
),
Expanded(
flex: 1,
child: Center(
child: IconButton(
icon: const Icon(Icons.remove_red_eye_outlined),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => cdTransactionDetails(
insurerName: item['insurer_name'],
cdMasterAccountNo: item['cd_master_account_no'],
insurerId: item['insurer_id'],
cd_ac_pk: item['cd_ac_pk'],
empClientId: widget.empClientId,
postToken: widget.postToken),
),
);
},
),
),
),
],
),
);
}
Widget _buildHeader() {
return Container(
decoration: BoxDecoration(
color: Color(0xFF00A6A6),
borderRadius: BorderRadius.circular(6),
),
padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
child: const Row(
children: [
Expanded(flex: 4, child: Text('Insurer Name', style: _headerStyle)),
Expanded(
flex: 4, child: Text('CD Account number', style: _headerStyle)),
Expanded(
flex: 4, child: Text('Current Balance', style: _headerStyle)),
Expanded(flex: 4, child: Text('Actions', style: _headerStyle)),
],
),
);
}
static final _dataBold = GoogleFonts.poppins(
fontSize: 12,
fontWeight: FontWeight.w400,
color: Color(0xFF000000),
);
static final _dataSub = GoogleFonts.poppins(
fontSize: 10,
fontWeight: FontWeight.w300,
color: Color(0xFF585757),
);
static const _headerStyle = TextStyle(
color: Colors.white,
fontWeight: FontWeight.bold,
);
Widget _buildPagination(BuildContext context) {
return Row(mainAxisAlignment: MainAxisAlignment.end, children: [
Padding( Padding(
padding: const EdgeInsets.symmetric(vertical: 12), padding: const EdgeInsets.symmetric(vertical: 12),
child: Row( child: Row(
@ -436,7 +548,8 @@ class _CdPolicieState extends State<CdPolicies> {
onChanged: (newValue) { onChanged: (newValue) {
setState(() { setState(() {
_rowsPerPage = newValue!; _rowsPerPage = newValue!;
_currentPage = 1; _currentPage =
1; // Reset to first page when rows per page changes
}); });
}, },
), ),
@ -474,8 +587,8 @@ class _CdPolicieState extends State<CdPolicies> {
), ),
), ),
IconButton( IconButton(
onPressed: _currentPage < onPressed:
(filteredData.length / _rowsPerPage).ceil() _currentPage < (filteredData.length / _rowsPerPage).ceil()
? () { ? () {
setState(() { setState(() {
_currentPage++; _currentPage++;
@ -487,10 +600,7 @@ class _CdPolicieState extends State<CdPolicies> {
], ],
), ),
), ),
], ]);
),
],
);
} }
} }

View File

@ -8,6 +8,7 @@ import 'package:http/http.dart' as http;
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:jwt_decode/jwt_decode.dart'; import 'package:jwt_decode/jwt_decode.dart';
import '../../claimshistory.dart';
import '../../models/environment.dart'; import '../../models/environment.dart';
import '../api_service.dart'; import '../api_service.dart';
@ -119,14 +120,14 @@ class _ClaimsPolicieState extends State<ClaimsPolicies> {
final response = await apiService.getClaimPoliciesToApi(widget.postToken); final response = await apiService.getClaimPoliciesToApi(widget.postToken);
if (response['status'] == 'success') { if (response['status'] == 'success') {
setState(() { setState(() {
// isLoading = false; isLoading = false;
}); });
setState(() { setState(() {
getClaimPoliciesApi = Map<String, dynamic>.from(response['data']); getClaimPoliciesApi = Map<String, dynamic>.from(response['data']);
}); });
} else { } else {
setState(() { setState(() {
// isLoading = false; isLoading = false;
}); });
// ToastHelper.showWarningToast( // ToastHelper.showWarningToast(
@ -227,7 +228,18 @@ class _ClaimsPolicieState extends State<ClaimsPolicies> {
height: 10, height: 10,
), ),
Expanded( isLoading
? Expanded(
// color: Color(0x98FFFCE5), // Semi-transparent background
child: Center(
child: // Your GIF loader widget
Image.asset(
height: 60,
width: 60,
'assets/nhance-loader.gif'), // Adjust path to your GIF loader
),
)
: Expanded(
child: _buildClaimsDataTable(context), child: _buildClaimsDataTable(context),
), ),
// Expanded( // Expanded(
@ -692,24 +704,46 @@ class _ClaimsPolicieState extends State<ClaimsPolicies> {
child: Text(item['ticket_created_date'] ?? '-', style: _dataBold), child: Text(item['ticket_created_date'] ?? '-', style: _dataBold),
), ),
Expanded( Expanded(
flex: 2, flex: 1,
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
GestureDetector( GestureDetector(
onTap: () {}, onTap: () {
showDialog(
context: context,
barrierDismissible: true,
builder: (BuildContext context) {
return Dialog(
backgroundColor: Colors.transparent,
insetPadding: EdgeInsets.all(16),
child: ClaimHistoryPopup(
ticket_id: item['id'],
empName: item['emp_name'], // example
empCode: item['emp_code'], // example
policyType: item['policy_type'],
clientPolicyNo: item['client_policy_no'],
claimAmount: item['claim_amount'],
claimNo: item['claim_no'],
postToken: widget.postToken,
),
);
},
);
},
child: Container( child: Container(
height: 30, height: 35,
width: 30, width: 35,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color(0xFF86D1D4), color: Color(0xFF86D1D4),
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
child: Padding( child: Padding(
padding: EdgeInsets.all(6), // You can adjust this value padding: EdgeInsets.all(10), // You can adjust this value
child: Image.asset( child: Image.asset(
'assets/claimHistory.png', 'assets/claimHistory.png',
fit: BoxFit.contain, fit: BoxFit.contain,
width: 5,
), ),
), ),
), ),
@ -1106,6 +1140,12 @@ class _ClaimsPolicieState extends State<ClaimsPolicies> {
height: 40, height: 40,
child: DropdownSearch<String>( child: DropdownSearch<String>(
selectedItem: selectedPolicyTypeName, selectedItem: selectedPolicyTypeName,
dropdownBuilder: (context, selectedItem) {
return Text(
selectedItem ?? "",
style: TextStyle(fontSize: 12),
);
},
items: (String? filter, _) { items: (String? filter, _) {
return ticketTypeList return ticketTypeList
.map<String>((item) => item['type_name'].toString()) .map<String>((item) => item['type_name'].toString())
@ -1123,7 +1163,6 @@ class _ClaimsPolicieState extends State<ClaimsPolicies> {
}, },
decoratorProps: DropDownDecoratorProps( decoratorProps: DropDownDecoratorProps(
decoration: InputDecoration( decoration: InputDecoration(
constraints: BoxConstraints(maxHeight: 200),
hintText: "Select Policy Type", hintText: "Select Policy Type",
hintStyle: TextStyle(fontSize: 12), hintStyle: TextStyle(fontSize: 12),
filled: true, filled: true,
@ -1144,9 +1183,12 @@ class _ClaimsPolicieState extends State<ClaimsPolicies> {
EdgeInsets.symmetric(horizontal: 12, vertical: 10), EdgeInsets.symmetric(horizontal: 12, vertical: 10),
), ),
), ),
popupProps: const PopupProps.menu( popupProps: PopupProps.menu(
menuProps: const MenuProps(color: Colors.red),
fit: FlexFit.loose,
constraints: const BoxConstraints(maxHeight: 250),
showSearchBox: true, showSearchBox: true,
searchFieldProps: TextFieldProps( searchFieldProps: const TextFieldProps(
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Search Policy Type", hintText: "Search Policy Type",
hintStyle: TextStyle(fontSize: 12), hintStyle: TextStyle(fontSize: 12),
@ -1207,7 +1249,7 @@ class _ClaimsPolicieState extends State<ClaimsPolicies> {
"Claim Status", "Claim Status",
style: TextStyle(fontSize: 12), style: TextStyle(fontSize: 12),
), ),
SizedBox( const SizedBox(
height: 3, height: 3,
), ),
SizedBox( SizedBox(
@ -1229,42 +1271,15 @@ class _ClaimsPolicieState extends State<ClaimsPolicies> {
"Selected selectedClaimStatusName: $selectedClaimStatusName"); "Selected selectedClaimStatusName: $selectedClaimStatusName");
print("Selected selectedClaimStatus: $selectedClaimStatus"); print("Selected selectedClaimStatus: $selectedClaimStatus");
}, },
dropdownBuilder: (context, selectedItem) {
// selectedItem: selectedClaimStatus, return Text(
// selectedItem: getTypeNameById(selectedClaimStatus), selectedItem ?? "",
// items: (String? filter, _) { style: TextStyle(fontSize: 12),
// List<String> allItems = claimStatusList );
// .map<String>((item) => item['claim_status'].toString()) },
// .toList();
//
// if (filter == null || filter.isEmpty) return allItems;
//
// return allItems
// .where((element) =>
// element.toLowerCase().contains(filter.toLowerCase()))
// .toList();
// },
//
// onChanged: (value) {
// if (!mounted) return;
// print("Selected ticket_type11: $value");
//
// final id = getIdByTypeName(value);
// print("getIdByTypeName returned: $id");
//
// if (id != null) {
// setState(() {
// selectedClaimStatus = id;
// });
// } else {
// print("No match found for $value");
// }
// },
decoratorProps: DropDownDecoratorProps( decoratorProps: DropDownDecoratorProps(
decoration: InputDecoration( decoration: InputDecoration(
constraints: BoxConstraints(maxHeight: 200), // suffixStyle: TextStyle(color: Colors.red),
hintText: "Select Policy Type", hintText: "Select Policy Type",
hintStyle: TextStyle(fontSize: 12), hintStyle: TextStyle(fontSize: 12),
filled: true, filled: true,
@ -1283,12 +1298,17 @@ class _ClaimsPolicieState extends State<ClaimsPolicies> {
), ),
contentPadding: contentPadding:
EdgeInsets.symmetric(horizontal: 12, vertical: 10), EdgeInsets.symmetric(horizontal: 12, vertical: 10),
labelStyle: TextStyle(fontSize: 19, color: Colors.red),
), ),
), ),
popupProps: PopupProps.menu( popupProps: const PopupProps.menu(
fit: FlexFit.loose,
constraints: BoxConstraints(maxHeight: 250),
showSearchBox: true, showSearchBox: true,
searchFieldProps: TextFieldProps( searchFieldProps: TextFieldProps(
style: TextStyle(fontSize: 14.0, color: Colors.red),
decoration: InputDecoration( decoration: InputDecoration(
labelStyle: TextStyle(fontSize: 19, color: Colors.red),
hintText: "Search Claim Status", hintText: "Search Claim Status",
hintStyle: TextStyle(fontSize: 12), hintStyle: TextStyle(fontSize: 12),
contentPadding: contentPadding:

View File

@ -29,6 +29,7 @@ class _PreEnrollmentState extends State<PreEnrollment> {
late ApiService apiService; late ApiService apiService;
dynamic getCardArrays = []; dynamic getCardArrays = [];
int selectedIndex = 0; int selectedIndex = 0;
bool isLoading = false;
// List<Map<String, dynamic>> getCardArrays = [ // List<Map<String, dynamic>> getCardArrays = [
// { // {
// "client_policy_id": 392, // "client_policy_id": 392,
@ -91,7 +92,7 @@ class _PreEnrollmentState extends State<PreEnrollment> {
print("hr_id -$hr_id"); print("hr_id -$hr_id");
print("token -$token"); print("token -$token");
// isLoading = true; isLoading = true;
// setState(() { // setState(() {
// _isLoading = true; // _isLoading = true;
// }); // });
@ -106,7 +107,7 @@ class _PreEnrollmentState extends State<PreEnrollment> {
// clintID!, clintBranchId!, hr_id, token); // clintID!, clintBranchId!, hr_id, token);
print('IN1'); print('IN1');
if (response['status'] == 'success') { if (response['status'] == 'success') {
// isLoading = false; isLoading = false;
setState(() { setState(() {
print('response'); print('response');
print(response['data']); print(response['data']);
@ -120,6 +121,7 @@ class _PreEnrollmentState extends State<PreEnrollment> {
print('IN2'); print('IN2');
print("getCardArrays9 - $getCardArrays"); print("getCardArrays9 - $getCardArrays");
} else { } else {
isLoading = false;
print('API request failed with status'); print('API request failed with status');
} }
} catch (e) { } catch (e) {
@ -159,7 +161,18 @@ class _PreEnrollmentState extends State<PreEnrollment> {
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Container( isLoading
? Container(
// color: Color(0x98FFFCE5), // Semi-transparent background
child: Center(
child: // Your GIF loader widget
Image.asset(
height: 60,
width: 60,
'assets/nhance-loader.gif'), // Adjust path to your GIF loader
),
)
: Container(
// color: Colors.redAccent.shade100, // color: Colors.redAccent.shade100,
// color: Colors.white, // color: Colors.white,
// color: Colors.white, // color: Colors.white,
@ -179,7 +192,8 @@ class _PreEnrollmentState extends State<PreEnrollment> {
) )
: GridView.builder( : GridView.builder(
itemCount: getCardArrays.length, itemCount: getCardArrays.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4, crossAxisCount: 4,
crossAxisSpacing: 20, crossAxisSpacing: 20,
mainAxisSpacing: 20, mainAxisSpacing: 20,