This commit is contained in:
Venba 2024-07-17 15:43:12 +05:30
parent 76ba68f022
commit f7edbd6a99
4 changed files with 4166 additions and 3772 deletions

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,9 @@ import 'package:google_fonts/google_fonts.dart';
import 'package:nhance_app_pwa/customAppBar/enrollmentAppBar.dart'; import 'package:nhance_app_pwa/customAppBar/enrollmentAppBar.dart';
import 'package:nhance_app_pwa/pages/enrollment/service/api_service.dart'; import 'package:nhance_app_pwa/pages/enrollment/service/api_service.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import '../../customAppBar/customFooter.dart';
import '../../customAppBar/responsive.dart'; import '../../customAppBar/responsive.dart';
import '../../customAppBar/tabs.dart';
import '../../customAppBar/toastHelper.dart'; import '../../customAppBar/toastHelper.dart';
import '../../models/environment.dart'; import '../../models/environment.dart';
import 'package:jwt_decode/jwt_decode.dart'; import 'package:jwt_decode/jwt_decode.dart';
@ -16,6 +18,7 @@ import 'package:intl/intl.dart';
import 'dart:io'; import 'dart:io';
import 'dart:async'; import 'dart:async';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import '../postEnrollment/chatbot.dart';
class empDetails extends StatefulWidget { class empDetails extends StatefulWidget {
const empDetails({Key? key}) : super(key: key); const empDetails({Key? key}) : super(key: key);
@ -707,8 +710,8 @@ class _empDetailsState extends State<empDetails> {
if (loadingProgress == null) return child; if (loadingProgress == null) return child;
return Center( return Center(
child: CircularProgressIndicator( child: CircularProgressIndicator(
value: loadingProgress value:
.expectedTotalBytes != loadingProgress.expectedTotalBytes !=
null null
? loadingProgress ? loadingProgress
.cumulativeBytesLoaded / .cumulativeBytesLoaded /
@ -776,8 +779,7 @@ class _empDetailsState extends State<empDetails> {
left: 10, left: 10,
right: 10), right: 10),
child: Row( child: Row(
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: [ children: [
Expanded( Expanded(
flex: 8, flex: 8,
@ -804,8 +806,7 @@ class _empDetailsState extends State<empDetails> {
children: [ children: [
Text( Text(
'Group Personal Accident Coverage ', 'Group Personal Accident Coverage ',
textAlign: textAlign: TextAlign.left,
TextAlign.left,
style: style:
GoogleFonts.poppins( GoogleFonts.poppins(
fontSize: Responsive fontSize: Responsive
@ -842,8 +843,7 @@ class _empDetailsState extends State<empDetails> {
SystemMouseCursors SystemMouseCursors
.click, .click,
child: Icon( child: Icon(
Icons Icons.file_download,
.file_download,
color: Color( color: Color(
0xFFE26728), 0xFFE26728),
size: 25, size: 25,
@ -884,8 +884,7 @@ class _empDetailsState extends State<empDetails> {
context) context)
? 20 ? 20
: 16, : 16,
fontWeight: fontWeight: FontWeight.w600,
FontWeight.w600,
), ),
), ),
], ],
@ -907,9 +906,8 @@ class _empDetailsState extends State<empDetails> {
// )), // )),
// ), // ),
SizedBox( SizedBox(
height: Responsive.isDesktop(context) height:
? 15 Responsive.isDesktop(context) ? 15 : 15),
: 15),
// Container( // Container(
// decoration: BoxDecoration( // decoration: BoxDecoration(
// color: Color( // color: Color(
@ -970,13 +968,9 @@ class _empDetailsState extends State<empDetails> {
left: 25, left: 25,
right: 25) right: 25)
: EdgeInsets.only( : EdgeInsets.only(
top: 8, top: 8, bottom: 8, left: 10, right: 10),
bottom: 8,
left: 10,
right: 10),
child: Row( child: Row(
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: [ children: [
Expanded( Expanded(
flex: Responsive.isDesktop(context) flex: Responsive.isDesktop(context)
@ -991,8 +985,8 @@ class _empDetailsState extends State<empDetails> {
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: [ children: [
Container( Container(
padding: Responsive padding: Responsive.isDesktop(
.isDesktop(context) context)
? EdgeInsets.all(10) ? EdgeInsets.all(10)
: EdgeInsets.all( : EdgeInsets.all(
5), // Padding around the icon 5), // Padding around the icon
@ -1034,8 +1028,7 @@ class _empDetailsState extends State<empDetails> {
context) context)
? 18 ? 18
: 16, : 16,
fontWeight: fontWeight: FontWeight.w600,
FontWeight.w600,
), ),
), ),
Text( Text(
@ -1062,16 +1055,15 @@ class _empDetailsState extends State<empDetails> {
CrossAxisAlignment.end, CrossAxisAlignment.end,
children: [ children: [
MouseRegion( MouseRegion(
cursor: SystemMouseCursors cursor:
.click, SystemMouseCursors.click,
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
openSelfForm('View'); openSelfForm('View');
}, },
child: Text( child: Text(
'View', 'View',
textAlign: textAlign: TextAlign.left,
TextAlign.left,
style: style:
GoogleFonts.poppins( GoogleFonts.poppins(
fontSize: Responsive fontSize: Responsive
@ -1138,8 +1130,7 @@ class _empDetailsState extends State<empDetails> {
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
backgroundColor: Color(0xFFE26728), backgroundColor: Color(0xFFE26728),
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
borderRadius: borderRadius: BorderRadius.circular(5),
BorderRadius.circular(5),
), ),
), ),
), ),
@ -1148,13 +1139,14 @@ class _empDetailsState extends State<empDetails> {
), ),
), ),
), ),
SizedBox(height: 40),
], ],
), ),
), ),
), ),
if (isLoading) if (isLoading)
Container( Container(
color: Color(0xFFFFFCE5), // Semi-transparent background color: Color(0x98FFFCE5), // Semi-transparent background
child: Center( child: Center(
child: // Your GIF loader widget child: // Your GIF loader widget
Image.asset( Image.asset(
@ -1163,7 +1155,58 @@ class _empDetailsState extends State<empDetails> {
'assets/nhance-loader.gif'), // Adjust path to your GIF loader 'assets/nhance-loader.gif'), // Adjust path to your GIF loader
), ),
), ),
])); if (Responsive.isDesktop(context))
Align(
alignment: Alignment.bottomCenter,
child: Container(
width: double.infinity, // Make the footer full width
child: CustomFooter(),
),
),
]),
floatingActionButton: Responsive.isDesktop(context)
? null
: FloatingActionButton(
onPressed: () => Navigator.push(
context,
MaterialPageRoute(builder: (context) => chatbot()),
),
child: Icon(Icons.chat),
),
floatingActionButtonLocation: Responsive.isDesktop(context)
? null
: FloatingActionButtonLocation.miniEndFloat,
bottomNavigationBar: Responsive.isDesktop(context)
? null
: CustomBottomNavigationBar(
onTabChanged: (index) {
// Add your navigation logic here
// For example:
if (index == 0) {
Navigator.pushNamed(context, 'home');
} else if (index == 1) {
Navigator.pushNamed(context, 'claims');
} else if (index == 2) {
Navigator.pushNamed(context, 'profile');
} else if (index == 3) {
Navigator.pushNamed(context, 'help');
}
},
icons: [
Icons.home_outlined,
Icons.sticky_note_2_outlined,
Icons.person_outline_outlined,
Icons.headset_mic_outlined,
],
labels: [
"Home",
"Claim",
"Profile",
"Help",
],
initialIndex: 0, // Initial index of the bottom navigation bar
),
);
} }
} }

View File

@ -12,8 +12,11 @@ import 'package:flutter/services.dart';
import 'dart:convert'; import 'dart:convert';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import '../../customAppBar/customFooter.dart';
import '../../customAppBar/responsive.dart'; import '../../customAppBar/responsive.dart';
import '../../customAppBar/tabs.dart';
import '../../customAppBar/toastHelper.dart'; import '../../customAppBar/toastHelper.dart';
import '../postEnrollment/chatbot.dart';
class empReviewDetails extends StatefulWidget { class empReviewDetails extends StatefulWidget {
const empReviewDetails({Key? key}) : super(key: key); const empReviewDetails({Key? key}) : super(key: key);
@ -24,6 +27,7 @@ class empReviewDetails extends StatefulWidget {
class _empReviewDetailsState extends State<empReviewDetails> { class _empReviewDetailsState extends State<empReviewDetails> {
late ApiService apiService; late ApiService apiService;
bool isLoading = true;
bool isChecked = false; // Declare the _isSwitched variable here bool isChecked = false; // Declare the _isSwitched variable here
dynamic _token; dynamic _token;
dynamic empCodeString; dynamic empCodeString;
@ -123,6 +127,11 @@ class _empReviewDetailsState extends State<empReviewDetails> {
super.initState(); super.initState();
apiService = ApiService(context); // Initialize ApiService here apiService = ApiService(context); // Initialize ApiService here
_loadToken(); _loadToken();
Future.delayed(Duration(seconds: 3), () {
setState(() {
isLoading = false;
});
});
} }
@override @override
@ -332,7 +341,7 @@ class _empReviewDetailsState extends State<empReviewDetails> {
setState(() { setState(() {
gpaDataIsEmpty = 0; gpaDataIsEmpty = 0;
}); });
ToastHelper.showWarningToast(context, 'No data found'); // ToastHelper.showWarningToast(context, 'No data found');
print('No data found in the response'); print('No data found in the response');
} }
} else { } else {
@ -617,6 +626,9 @@ class _empReviewDetailsState extends State<empReviewDetails> {
} }
Future<void> sendAddOnAPI() async { Future<void> sendAddOnAPI() async {
setState(() {
isLoading = true;
});
if (addOnsDependentMappedFamilyFloatersArray != null) { if (addOnsDependentMappedFamilyFloatersArray != null) {
dynamic getDependentTrueObjects = addOnsDependentMappedFamilyFloatersArray dynamic getDependentTrueObjects = addOnsDependentMappedFamilyFloatersArray
.where((element) => element['is_value_exist'] == true) .where((element) => element['is_value_exist'] == true)
@ -688,14 +700,24 @@ class _empReviewDetailsState extends State<empReviewDetails> {
final response = await apiService.sendAddOnToAPI(apiParams); final response = await apiService.sendAddOnToAPI(apiParams);
if (response['status'] == 'success') { if (response['status'] == 'success') {
setState(() {
isLoading = false;
isChecked = false;
});
print('response.statusCode == 200'); print('response.statusCode == 200');
ToastHelper.showSuccessToast(context, 'Saved Successfully...'); ToastHelper.showSuccessToast(context, 'Saved Successfully...');
} else { } else {
setState(() {
isLoading = false;
});
// Handle other status codes // Handle other status codes
ToastHelper.showErrorToast(context, 'Failed to Save'); ToastHelper.showErrorToast(context, 'Failed to Save');
print('Request failed with status: ${response['code']}'); print('Request failed with status: ${response['code']}');
} }
} catch (e) { } catch (e) {
setState(() {
isLoading = false;
});
// Handle exceptions // Handle exceptions
print('Exception occurred: $e'); print('Exception occurred: $e');
} }
@ -726,7 +748,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
} else { } else {
return Scaffold( return Scaffold(
appBar: CustomAppBar(), appBar: CustomAppBar(),
body: SingleChildScrollView( body: Stack(children: [
SingleChildScrollView(
child: Container( child: Container(
padding: Responsive.isDesktop(context) padding: Responsive.isDesktop(context)
? EdgeInsets.symmetric( ? EdgeInsets.symmetric(
@ -771,17 +794,19 @@ class _empReviewDetailsState extends State<empReviewDetails> {
if (loadingProgress == null) return child; if (loadingProgress == null) return child;
return Center( return Center(
child: CircularProgressIndicator( child: CircularProgressIndicator(
value: loadingProgress.expectedTotalBytes != value:
loadingProgress.expectedTotalBytes !=
null null
? loadingProgress ? loadingProgress
.cumulativeBytesLoaded / .cumulativeBytesLoaded /
loadingProgress.expectedTotalBytes! loadingProgress
.expectedTotalBytes!
: null, : null,
), ),
); );
}, },
errorBuilder: (BuildContext context, Object error, errorBuilder: (BuildContext context,
StackTrace? stackTrace) { Object error, StackTrace? stackTrace) {
return Image.asset( return Image.asset(
'assets/Solid_gray.png', // Replace 'default_image.png' with your default image asset path 'assets/Solid_gray.png', // Replace 'default_image.png' with your default image asset path
width: 80, width: 80,
@ -798,7 +823,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
clientName ?? '', clientName ?? '',
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: GoogleFonts.poppins( style: GoogleFonts.poppins(
fontSize: Responsive.isDesktop(context) ? 20 : 18, fontSize:
Responsive.isDesktop(context) ? 20 : 18,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
), ),
), ),
@ -815,7 +841,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
width: double.infinity, width: double.infinity,
padding: Responsive.isDesktop(context) padding: Responsive.isDesktop(context)
? EdgeInsets.all(30) ? EdgeInsets.all(30)
: EdgeInsets.all(10), // Add padding to the container : EdgeInsets.all(
10), // Add padding to the container
child: Column(children: [ child: Column(children: [
Row( Row(
children: [ children: [
@ -918,9 +945,15 @@ class _empReviewDetailsState extends State<empReviewDetails> {
), ),
padding: Responsive.isDesktop(context) padding: Responsive.isDesktop(context)
? EdgeInsets.only( ? EdgeInsets.only(
top: 15, bottom: 15, left: 25, right: 25) top: 15,
bottom: 15,
left: 25,
right: 25)
: EdgeInsets.only( : EdgeInsets.only(
top: 10, bottom: 10, left: 10, right: 10), top: 10,
bottom: 10,
left: 10,
right: 10),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -950,9 +983,10 @@ class _empReviewDetailsState extends State<empReviewDetails> {
Text( Text(
'Group Personal Accident Coverage', 'Group Personal Accident Coverage',
textAlign: TextAlign.left, textAlign: TextAlign.left,
style: GoogleFonts.poppins( style:
fontSize: GoogleFonts.poppins(
Responsive.isDesktop( fontSize: Responsive
.isDesktop(
context) context)
? 20 ? 20
: 16, : 16,
@ -960,7 +994,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
FontWeight.w600, FontWeight.w600,
), ),
), ),
if (gpaECardDownload != null) if (gpaECardDownload !=
null)
GestureDetector( GestureDetector(
onTap: () async { onTap: () async {
// Convert the URL string to a Uri object // Convert the URL string to a Uri object
@ -971,7 +1006,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
if (await canLaunchUrl( if (await canLaunchUrl(
uri)) { uri)) {
// Open the URL in the default browser // Open the URL in the default browser
await launchUrl(uri); await launchUrl(
uri);
} else { } else {
// Handle the case where the URL cannot be launched // Handle the case where the URL cannot be launched
print( print(
@ -984,8 +1020,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
.click, .click,
child: Icon( child: Icon(
Icons.file_download, Icons.file_download,
color: color: Color(
Color(0xFFE26728), 0xFFE26728),
size: 25, size: 25,
), ),
), ),
@ -1047,8 +1083,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: [ children: [
Icon(Icons.arrow_right, Icon(Icons.arrow_right,
color: color: Color(
Color(0xFFE26728)), // Arrow icon 0xFFE26728)), // Arrow icon
SizedBox( SizedBox(
width: Responsive.isDesktop(context) width: Responsive.isDesktop(context)
? 10 ? 10
@ -1134,9 +1170,15 @@ class _empReviewDetailsState extends State<empReviewDetails> {
), ),
padding: Responsive.isDesktop(context) padding: Responsive.isDesktop(context)
? EdgeInsets.only( ? EdgeInsets.only(
top: 15, bottom: 15, left: 25, right: 25) top: 15,
bottom: 15,
left: 25,
right: 25)
: EdgeInsets.only( : EdgeInsets.only(
top: 10, bottom: 10, left: 10, right: 10), top: 10,
bottom: 10,
left: 10,
right: 10),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -1166,9 +1208,10 @@ class _empReviewDetailsState extends State<empReviewDetails> {
Text( Text(
'Group Medical Coverage - Top Up', 'Group Medical Coverage - Top Up',
textAlign: TextAlign.left, textAlign: TextAlign.left,
style: GoogleFonts.poppins( style:
fontSize: GoogleFonts.poppins(
Responsive.isDesktop( fontSize: Responsive
.isDesktop(
context) context)
? 20 ? 20
: 16, : 16,
@ -1188,7 +1231,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
if (await canLaunchUrl( if (await canLaunchUrl(
uri)) { uri)) {
// Open the URL in the default browser // Open the URL in the default browser
await launchUrl(uri); await launchUrl(
uri);
} else { } else {
// Handle the case where the URL cannot be launched // Handle the case where the URL cannot be launched
print( print(
@ -1201,8 +1245,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
.click, .click,
child: Icon( child: Icon(
Icons.file_download, Icons.file_download,
color: color: Color(
Color(0xFFE26728), 0xFFE26728),
size: 25, size: 25,
), ),
), ),
@ -1270,8 +1314,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: [ children: [
Icon(Icons.arrow_right, Icon(Icons.arrow_right,
color: color: Color(
Color(0xFFE26728)), // Arrow icon 0xFFE26728)), // Arrow icon
SizedBox( SizedBox(
width: Responsive.isDesktop(context) width: Responsive.isDesktop(context)
? 10 ? 10
@ -1349,9 +1393,15 @@ class _empReviewDetailsState extends State<empReviewDetails> {
), ),
padding: Responsive.isDesktop(context) padding: Responsive.isDesktop(context)
? EdgeInsets.only( ? EdgeInsets.only(
top: 15, bottom: 15, left: 25, right: 25) top: 15,
bottom: 15,
left: 25,
right: 25)
: EdgeInsets.only( : EdgeInsets.only(
top: 10, bottom: 10, left: 10, right: 10), top: 10,
bottom: 10,
left: 10,
right: 10),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -1381,9 +1431,10 @@ class _empReviewDetailsState extends State<empReviewDetails> {
Text( Text(
topUpParentTypeName ?? '', topUpParentTypeName ?? '',
textAlign: TextAlign.left, textAlign: TextAlign.left,
style: GoogleFonts.poppins( style:
fontSize: GoogleFonts.poppins(
Responsive.isDesktop( fontSize: Responsive
.isDesktop(
context) context)
? 20 ? 20
: 16, : 16,
@ -1403,7 +1454,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
if (await canLaunchUrl( if (await canLaunchUrl(
uri)) { uri)) {
// Open the URL in the default browser // Open the URL in the default browser
await launchUrl(uri); await launchUrl(
uri);
} else { } else {
// Handle the case where the URL cannot be launched // Handle the case where the URL cannot be launched
print( print(
@ -1416,8 +1468,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
.click, .click,
child: Icon( child: Icon(
Icons.file_download, Icons.file_download,
color: color: Color(
Color(0xFFE26728), 0xFFE26728),
size: 25, size: 25,
), ),
), ),
@ -1486,8 +1538,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: [ children: [
Icon(Icons.arrow_right, Icon(Icons.arrow_right,
color: color: Color(
Color(0xFFE26728)), // Arrow icon 0xFFE26728)), // Arrow icon
SizedBox( SizedBox(
width: Responsive.isDesktop(context) width: Responsive.isDesktop(context)
? 10 ? 10
@ -1565,15 +1617,22 @@ class _empReviewDetailsState extends State<empReviewDetails> {
), ),
padding: Responsive.isDesktop(context) padding: Responsive.isDesktop(context)
? EdgeInsets.only( ? EdgeInsets.only(
top: 15, bottom: 15, left: 25, right: 25) top: 15,
bottom: 15,
left: 25,
right: 25)
: EdgeInsets.only( : EdgeInsets.only(
top: 10, bottom: 10, left: 10, right: 10), top: 10,
bottom: 10,
left: 10,
right: 10),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Expanded( Expanded(
flex: flex: Responsive.isDesktop(context)
Responsive.isDesktop(context) ? 9 : 8, ? 9
: 8,
child: Container( child: Container(
alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
child: Column( child: Column(
@ -1583,7 +1642,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: [ children: [
Text( Text(
addOnsDependentPolicyName ?? '', addOnsDependentPolicyName ??
'',
textAlign: TextAlign.left, textAlign: TextAlign.left,
style: GoogleFonts.poppins( style: GoogleFonts.poppins(
fontSize: fontSize:
@ -1598,9 +1658,10 @@ class _empReviewDetailsState extends State<empReviewDetails> {
Text( Text(
'Group Medical Coverage - Dependent AddOns', 'Group Medical Coverage - Dependent AddOns',
textAlign: TextAlign.left, textAlign: TextAlign.left,
style: GoogleFonts.poppins( style:
fontSize: GoogleFonts.poppins(
Responsive.isDesktop( fontSize: Responsive
.isDesktop(
context) context)
? 20 ? 20
: 16, : 16,
@ -1620,7 +1681,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
if (await canLaunchUrl( if (await canLaunchUrl(
uri)) { uri)) {
// Open the URL in the default browser // Open the URL in the default browser
await launchUrl(uri); await launchUrl(
uri);
} else { } else {
// Handle the case where the URL cannot be launched // Handle the case where the URL cannot be launched
print( print(
@ -1633,8 +1695,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
.click, .click,
child: Icon( child: Icon(
Icons.file_download, Icons.file_download,
color: color: Color(
Color(0xFFE26728), 0xFFE26728),
size: 25, size: 25,
), ),
), ),
@ -1644,8 +1706,9 @@ class _empReviewDetailsState extends State<empReviewDetails> {
], ],
))), ))),
Expanded( Expanded(
flex: flex: Responsive.isDesktop(context)
Responsive.isDesktop(context) ? 3 : 4, ? 3
: 4,
child: Container( child: Container(
alignment: Alignment.centerRight, alignment: Alignment.centerRight,
child: Column( child: Column(
@ -1655,7 +1718,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
CrossAxisAlignment.end, CrossAxisAlignment.end,
children: [ children: [
Text( Text(
addOnsFloaterTextHeading ?? '', addOnsFloaterTextHeading ??
'',
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: GoogleFonts.poppins( style: GoogleFonts.poppins(
fontSize: fontSize:
@ -1702,8 +1766,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: [ children: [
Icon(Icons.arrow_right, Icon(Icons.arrow_right,
color: color: Color(
Color(0xFFE26728)), // Arrow icon 0xFFE26728)), // Arrow icon
SizedBox( SizedBox(
width: Responsive.isDesktop(context) width: Responsive.isDesktop(context)
? 10 ? 10
@ -1756,7 +1820,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
'Premium Summary', 'Premium Summary',
textAlign: TextAlign.left, textAlign: TextAlign.left,
style: GoogleFonts.poppins( style: GoogleFonts.poppins(
fontSize: Responsive.isDesktop( fontSize:
Responsive.isDesktop(
context) context)
? 18 ? 18
: 16, : 16,
@ -1793,10 +1858,12 @@ class _empReviewDetailsState extends State<empReviewDetails> {
children: [ children: [
TableCell( TableCell(
child: Padding( child: Padding(
padding: EdgeInsets.all(8.0), padding:
EdgeInsets.all(8.0),
child: Text( child: Text(
'Policy ', 'Policy ',
textAlign: TextAlign.start, textAlign:
TextAlign.start,
style: GoogleFonts.poppins( style: GoogleFonts.poppins(
fontSize: Responsive fontSize: Responsive
.isDesktop( .isDesktop(
@ -1810,10 +1877,12 @@ class _empReviewDetailsState extends State<empReviewDetails> {
), ),
TableCell( TableCell(
child: Padding( child: Padding(
padding: EdgeInsets.all(8.0), padding:
EdgeInsets.all(8.0),
child: Text( child: Text(
'Additional Premium', 'Additional Premium',
textAlign: TextAlign.start, textAlign:
TextAlign.start,
style: GoogleFonts.poppins( style: GoogleFonts.poppins(
fontSize: Responsive fontSize: Responsive
.isDesktop( .isDesktop(
@ -1827,10 +1896,12 @@ class _empReviewDetailsState extends State<empReviewDetails> {
), ),
TableCell( TableCell(
child: Padding( child: Padding(
padding: EdgeInsets.all(8.0), padding:
EdgeInsets.all(8.0),
child: Text( child: Text(
'GST', 'GST',
textAlign: TextAlign.start, textAlign:
TextAlign.start,
style: GoogleFonts.poppins( style: GoogleFonts.poppins(
fontSize: Responsive fontSize: Responsive
.isDesktop( .isDesktop(
@ -1844,10 +1915,12 @@ class _empReviewDetailsState extends State<empReviewDetails> {
), ),
TableCell( TableCell(
child: Padding( child: Padding(
padding: EdgeInsets.all(8.0), padding:
EdgeInsets.all(8.0),
child: Text( child: Text(
'Total', 'Total',
textAlign: TextAlign.start, textAlign:
TextAlign.start,
style: GoogleFonts.poppins( style: GoogleFonts.poppins(
fontSize: Responsive fontSize: Responsive
.isDesktop( .isDesktop(
@ -1890,8 +1963,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
EdgeInsets.all(8.0), EdgeInsets.all(8.0),
child: Text( child: Text(
'$topUpSiPremiumValue/Year', '$topUpSiPremiumValue/Year',
textAlign: textAlign: Responsive
Responsive.isDesktop( .isDesktop(
context) context)
? TextAlign.start ? TextAlign.start
: TextAlign.start, : TextAlign.start,
@ -1910,8 +1983,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
EdgeInsets.all(8.0), EdgeInsets.all(8.0),
child: Text( child: Text(
'$topUpSiPremiumGst/-', '$topUpSiPremiumGst/-',
textAlign: textAlign: Responsive
Responsive.isDesktop( .isDesktop(
context) context)
? TextAlign.start ? TextAlign.start
: TextAlign.start, : TextAlign.start,
@ -1930,8 +2003,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
EdgeInsets.all(8.0), EdgeInsets.all(8.0),
child: Text( child: Text(
'$topUpSiTotalAmt/Year', '$topUpSiTotalAmt/Year',
textAlign: textAlign: Responsive
Responsive.isDesktop( .isDesktop(
context) context)
? TextAlign.start ? TextAlign.start
: TextAlign.start, : TextAlign.start,
@ -1975,8 +2048,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
EdgeInsets.all(8.0), EdgeInsets.all(8.0),
child: Text( child: Text(
'$topUpParentSiPremiumValue/Year', '$topUpParentSiPremiumValue/Year',
textAlign: textAlign: Responsive
Responsive.isDesktop( .isDesktop(
context) context)
? TextAlign.start ? TextAlign.start
: TextAlign.start, : TextAlign.start,
@ -1995,8 +2068,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
EdgeInsets.all(8.0), EdgeInsets.all(8.0),
child: Text( child: Text(
'$topUpParentSiPremiumGst/-', '$topUpParentSiPremiumGst/-',
textAlign: textAlign: Responsive
Responsive.isDesktop( .isDesktop(
context) context)
? TextAlign.start ? TextAlign.start
: TextAlign.start, : TextAlign.start,
@ -2015,8 +2088,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
EdgeInsets.all(8.0), EdgeInsets.all(8.0),
child: Text( child: Text(
'$topUpParentSiTotalAmt/Year', '$topUpParentSiTotalAmt/Year',
textAlign: textAlign: Responsive
Responsive.isDesktop( .isDesktop(
context) context)
? TextAlign.start ? TextAlign.start
: TextAlign.start, : TextAlign.start,
@ -2060,8 +2133,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
EdgeInsets.all(8.0), EdgeInsets.all(8.0),
child: Text( child: Text(
'$addOnDependentPremiumValue/Year', '$addOnDependentPremiumValue/Year',
textAlign: textAlign: Responsive
Responsive.isDesktop( .isDesktop(
context) context)
? TextAlign.start ? TextAlign.start
: TextAlign.start, : TextAlign.start,
@ -2080,8 +2153,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
EdgeInsets.all(8.0), EdgeInsets.all(8.0),
child: Text( child: Text(
'$addOnsDependentPremiumGst/-', '$addOnsDependentPremiumGst/-',
textAlign: textAlign: Responsive
Responsive.isDesktop( .isDesktop(
context) context)
? TextAlign.start ? TextAlign.start
: TextAlign.start, : TextAlign.start,
@ -2100,8 +2173,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
EdgeInsets.all(8.0), EdgeInsets.all(8.0),
child: Text( child: Text(
'$addOnsDependentTotalAmt/Year', '$addOnsDependentTotalAmt/Year',
textAlign: textAlign: Responsive
Responsive.isDesktop( .isDesktop(
context) context)
? TextAlign.start ? TextAlign.start
: TextAlign.start, : TextAlign.start,
@ -2141,7 +2214,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
'Total Payable', 'Total Payable',
textAlign: TextAlign.left, textAlign: TextAlign.left,
style: GoogleFonts.poppins( style: GoogleFonts.poppins(
fontSize: Responsive.isDesktop( fontSize:
Responsive.isDesktop(
context) context)
? 20 ? 20
: 16, : 16,
@ -2165,7 +2239,8 @@ class _empReviewDetailsState extends State<empReviewDetails> {
'$totalPayableAmt/Year', '$totalPayableAmt/Year',
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: GoogleFonts.poppins( style: GoogleFonts.poppins(
fontSize: Responsive.isDesktop( fontSize:
Responsive.isDesktop(
context) context)
? 18 ? 18
: 16, : 16,
@ -2216,12 +2291,13 @@ class _empReviewDetailsState extends State<empReviewDetails> {
children: [ children: [
Text( Text(
'I declare that the information I have provided is true and accurate to the best of my knowledge', 'I declare that the information I have provided is true and accurate to the best of my knowledge',
textAlign: textAlign: Responsive.isDesktop(
Responsive.isDesktop(context) context)
? TextAlign.left ? TextAlign.left
: TextAlign.start, : TextAlign.start,
style: GoogleFonts.poppins( style: GoogleFonts.poppins(
fontSize: Responsive.isDesktop( fontSize:
Responsive.isDesktop(
context) context)
? 18 ? 18
: 15, : 15,
@ -2303,10 +2379,73 @@ class _empReviewDetailsState extends State<empReviewDetails> {
], ],
), ),
)), )),
SizedBox(height: 30)
], ],
), ),
), ),
), ),
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
),
),
if (Responsive.isDesktop(context))
Align(
alignment: Alignment.bottomCenter,
child: Container(
width: double.infinity, // Make the footer full width
child: CustomFooter(),
),
),
]),
floatingActionButton: Responsive.isDesktop(context)
? null
: FloatingActionButton(
onPressed: () => Navigator.push(
context,
MaterialPageRoute(builder: (context) => chatbot()),
),
child: Icon(Icons.chat),
),
floatingActionButtonLocation: Responsive.isDesktop(context)
? null
: FloatingActionButtonLocation.miniEndFloat,
bottomNavigationBar: Responsive.isDesktop(context)
? null
: CustomBottomNavigationBar(
onTabChanged: (index) {
// Add your navigation logic here
// For example:
if (index == 0) {
Navigator.pushNamed(context, 'home');
} else if (index == 1) {
Navigator.pushNamed(context, 'claims');
} else if (index == 2) {
Navigator.pushNamed(context, 'profile');
} else if (index == 3) {
Navigator.pushNamed(context, 'help');
}
},
icons: [
Icons.home_outlined,
Icons.sticky_note_2_outlined,
Icons.person_outline_outlined,
Icons.headset_mic_outlined,
],
labels: [
"Home",
"Claim",
"Profile",
"Help",
],
initialIndex: 0, // Initial index of the bottom navigation bar
),
); );
} }
} }

View File

@ -1,4 +1,3 @@
import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_image_slideshow/flutter_image_slideshow.dart'; import 'package:flutter_image_slideshow/flutter_image_slideshow.dart';
@ -39,6 +38,7 @@ class _MyAppState extends State<MyApp> {
dynamic client_branch_id; dynamic client_branch_id;
List<String> advertisementImages = []; List<String> advertisementImages = [];
bool isLoading = true; bool isLoading = true;
dynamic policyCount;
void _onTabChanged(int index) { void _onTabChanged(int index) {
setState(() { setState(() {
@ -98,7 +98,12 @@ class _MyAppState extends State<MyApp> {
if (response['status'] == 'success') { if (response['status'] == 'success') {
setState(() { setState(() {
policyList = response['data']; policyList = response['data'];
print('policyList $policyList');
emp_name = response['emp_name']; emp_name = response['emp_name'];
if (status == 'Active') {
policyCount = policyList.length;
print('policyCount : $policyCount');
}
}); });
print(policyList); print(policyList);
} else { } else {
@ -217,6 +222,73 @@ class _MyAppState extends State<MyApp> {
), ),
), ),
SizedBox(height: 15), SizedBox(height: 15),
Card(
elevation: 2,
color: Color(0xFFDDF3FF),
shape: RoundedRectangleBorder(
borderRadius:
BorderRadius.circular(10), // Set the border radius here
),
child: ClipRRect(
borderRadius: BorderRadius.circular(
10), // Apply border radius to the container
child: Column(
children: [
Container(
decoration: BoxDecoration(
color: Color(
0xFFDDF3FF), // Set background color for the container
borderRadius: BorderRadius.circular(
10), // Set border radius for the container
),
padding: Responsive.isDesktop(context)
? EdgeInsets.only(
top: 10, bottom: 10, left: 10, right: 10)
: EdgeInsets.only(
top: 10, bottom: 10, left: 10, right: 10),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
flex: 7,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
'Policies for enrollment : $policyCount',
textAlign: TextAlign.center,
style: GoogleFonts.poppins(
fontSize:
Responsive.isDesktop(context) ? 18 : 14,
fontWeight: FontWeight.w500,
color: Color(0xFF404040),
),
),
],
),
),
Expanded(
flex: 5,
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
ElevatedButton(
onPressed: () {
Navigator.pushNamed(context, 'empDetails');
},
child: Text('View Details'),
),
],
),
),
],
),
),
],
),
),
),
SizedBox(height: 15),
if (advertisementImages != null) if (advertisementImages != null)
Container( Container(
child: Row( child: Row(