faiz_marathon_signalR_critical
Sultan Khan 3 years ago
parent 13150321d4
commit b5a5399b95

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" width="19.914" height="15.524" viewBox="0 0 19.914 15.524">
<g id="contact-details" transform="translate(0 -40.4)">
<g id="Group_7494" data-name="Group 7494" transform="translate(0 40.4)">
<rect id="Rectangle_17431" data-name="Rectangle 17431" width="1.676" height="1.677" transform="translate(3.789 9.359)" fill="#2bb8a6"/>
<path id="Path_4578" data-name="Path 4578" d="M70.584,123.011a.838.838,0,1,1-.838.838A.838.838,0,0,1,70.584,123.011Z" transform="translate(-65.957 -118.523)" fill="#2bb8a6"/>
<path id="Path_4579" data-name="Path 4579" d="M19.2,40.4H.719A.719.719,0,0,0,0,41.118V55.206a.719.719,0,0,0,.719.718H19.2a.718.718,0,0,0,.718-.718V41.119A.719.719,0,0,0,19.2,40.4ZM6.9,52.154a.718.718,0,0,1-.719.718H3.071a.718.718,0,0,1-.718-.718V49.041a.718.718,0,0,1,.718-.718H6.185a.718.718,0,0,1,.719.718v3.114ZM4.628,48A2.276,2.276,0,1,1,6.9,45.727,2.278,2.278,0,0,1,4.628,48Zm12.216,4.431H10A.718.718,0,0,1,10,51h6.844a.718.718,0,1,1,0,1.437Zm0-2.4H10A.719.719,0,0,1,10,48.6h6.844a.719.719,0,0,1,0,1.437Zm0-2.4H10a.719.719,0,0,1,0-1.437h6.844a.719.719,0,0,1,0,1.437Zm0-2.4H10a.719.719,0,0,1,0-1.437h6.844a.719.719,0,0,1,0,1.437Z" transform="translate(0 -40.4)" fill="#2bb8a6"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="15.083" height="20.111" viewBox="0 0 15.083 20.111">
<g id="Pin" transform="translate(-8)">
<path id="Path_4580" data-name="Path 4580" d="M15.542,0A7.552,7.552,0,0,0,8,7.542c0,5.414,7.026,12.2,7.325,12.481a.311.311,0,0,0,.434,0c.3-.286,7.325-7.067,7.325-12.481A7.552,7.552,0,0,0,15.542,0Zm0,11A3.457,3.457,0,1,1,19,7.542,3.457,3.457,0,0,1,15.542,11Z" fill="#2bb8a6"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 435 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="17.224" height="16.16" viewBox="0 0 17.224 16.16">
<path id="family_3_" data-name="family (3)" d="M7.976,15.087v.831a2.518,2.518,0,0,1-2.515,2.515H2.214a.287.287,0,0,1-.287-.287V16.626A1.828,1.828,0,0,1,3.753,14.8H7.688A.287.287,0,0,1,7.976,15.087Zm-2.515,3.92c-2.147,0-2.919.007-3.237,0a.287.287,0,0,0-.3.287v.533a2.489,2.489,0,1,0,4.979-.02v-.713a.287.287,0,0,0-.383-.271A3.073,3.073,0,0,1,5.461,19.008Zm3.975,9.87a3.24,3.24,0,0,1-1.629,0,.144.144,0,0,0-.148.229,1.242,1.242,0,0,0,1.925-.006A.143.143,0,0,0,9.436,28.878Zm1.259-.217h-.059a.284.284,0,0,0-.268.2,1.826,1.826,0,0,1-3.319.377,1.9,1.9,0,0,1-.174-.376.288.288,0,0,0-.272-.2H6.528A1.724,1.724,0,0,0,4.8,30.385v.287a.287.287,0,0,0,.287.287h7.041a.287.287,0,0,0,.287-.287v-.287A1.724,1.724,0,0,0,10.7,28.661ZM1.93,27.605H.287A.287.287,0,0,0,0,27.893v2.78a.287.287,0,0,0,.287.287H1.93a.287.287,0,0,0,.287-.287v-2.78A.287.287,0,0,0,1.93,27.605Zm4.8-4.484a.287.287,0,0,0-.152-.522H6.491a.237.237,0,0,0-.223.154,1.949,1.949,0,0,1-1.792,1.294,1.975,1.975,0,0,1-1.825-1.33.174.174,0,0,0-.163-.117A2.489,2.489,0,0,0,0,25.087v1.656a.287.287,0,0,0,.287.287H1.93a.287.287,0,0,0,.287-.287v-.12a.293.293,0,0,1,.268-.3.287.287,0,0,1,.306.287v4.06a.287.287,0,0,0,.287.287h.862a.287.287,0,0,0,.287-.292c0-.074,0-.163,0-.282A2.3,2.3,0,0,1,5.9,28.174a.288.288,0,0,0,.148-.454,3.239,3.239,0,0,1,.68-4.6Zm8.007-.524a.234.234,0,0,0-.222.161A1.847,1.847,0,0,1,12.8,24.036a1.928,1.928,0,0,1-1.731-1.292.232.232,0,0,0-.216-.146c-.064,0-.131,0-.2,0a.288.288,0,0,0-.156.523,3.239,3.239,0,0,1,.678,4.6.288.288,0,0,0,.148.454,2.3,2.3,0,0,1,1.67,2.212c0,.119,0,.208,0,.282a.287.287,0,0,0,.287.292h.862a.287.287,0,0,0,.287-.287v-4.06a.287.287,0,0,1,.306-.287.293.293,0,0,1,.268.3v.12a.287.287,0,0,0,.287.287h1.642a.287.287,0,0,0,.287-.287V25.087A2.489,2.489,0,0,0,14.734,22.6Zm.272,5.295v2.78a.287.287,0,0,0,.287.287h1.642a.287.287,0,0,0,.287-.287v-2.78a.287.287,0,0,0-.287-.287H15.294A.287.287,0,0,0,15.007,27.893ZM12.857,14.816A3.583,3.583,0,0,0,9.243,18.4v3.564a.288.288,0,0,0,.392.267,3.056,3.056,0,0,1,.474-.139.288.288,0,0,0,.173-.455,3.1,3.1,0,0,1-.6-1.84V18.683a.862.862,0,0,1,.873-.862,10.523,10.523,0,0,0,3.477-.542,1.353,1.353,0,0,1,1.784,1.281v1.253a3.076,3.076,0,0,1-.6,1.825.287.287,0,0,0,.166.453,3.036,3.036,0,0,1,.617.2.288.288,0,0,0,.408-.261V18.441A3.609,3.609,0,0,0,12.857,14.816ZM8.612,23.092a2.659,2.659,0,1,0,2.659,2.659,2.662,2.662,0,0,0-2.659-2.659ZM12.06,22.8a.144.144,0,0,0-.137.239,1.156,1.156,0,0,0,1.819-.052.144.144,0,0,0-.152-.229A3.085,3.085,0,0,1,12.06,22.8Zm2.151-4.979a11.083,11.083,0,0,1-3.667.572.287.287,0,0,0-.291.287v1.109a2.492,2.492,0,1,0,4.984.02V18.559A.778.778,0,0,0,14.211,17.823ZM3.638,22.787a.144.144,0,0,0-.143.236,1.292,1.292,0,0,0,1.991-.044.144.144,0,0,0-.152-.23A3.069,3.069,0,0,1,3.638,22.787Z" transform="translate(0 -14.8)" fill="#2bb8a6"/>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" width="17.232" height="19.606" viewBox="0 0 17.232 19.606">
<g id="user_19_" data-name="user (19)" transform="translate(-31)">
<g id="Group_7233" data-name="Group 7233" transform="translate(34.446)">
<g id="Group_7232" data-name="Group 7232">
<path id="Path_16" data-name="Path 16" d="M126.17,0a5.17,5.17,0,1,0,5.169,5.17A5.175,5.175,0,0,0,126.17,0Z" transform="translate(-121)" fill="#2bb8a6"/>
</g>
</g>
<g id="Group_7235" data-name="Group 7235" transform="translate(31 11.488)">
<g id="Group_7234" data-name="Group 7234">
<path id="Path_17" data-name="Path 17" d="M46.048,302.228A7.369,7.369,0,0,0,40.765,300h-2.3a7.37,7.37,0,0,0-5.283,2.228A7.534,7.534,0,0,0,31,307.544a.574.574,0,0,0,.574.574H47.657a.574.574,0,0,0,.574-.574A7.534,7.534,0,0,0,46.048,302.228Z" transform="translate(-31 -300)" fill="#2bb8a6"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 936 B

@ -236,16 +236,15 @@
"month": "Month",
"day": "Day",
"completingYear": "We appreciate you for completing the service of",
"address" : "Address",
"address": "Address",
"phoneNumber": "Phone Number",
"businessGroup": "Business",
"Payroll": "Payroll",
"civilIdentityNumber": "Civil Identity Number",
"dateOfBirth" : "Date of Birth",
"dateOfBirth": "Date of Birth",
"maritalStatus ": "Marital Status ",
"fullName": "Full Name",
"remove": "remove",
"update": "update",
"remove": "Remove",
"profile": {
"reset_password": {
"label": "Reset Password",

@ -1,5 +1,3 @@
import 'dart:async';
import 'package:mohem_flutter_app/app_state/app_state.dart';
@ -18,12 +16,11 @@ class ProfileApiClient {
factory ProfileApiClient() => _instance;
Future<List<GetEmployeeContactsList>> getEmployeeContacts() async {
String url = "${ApiConsts.erpRest}GET_EMPLOYEE_CONTACTS";
Map<String, dynamic> postParams = {
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
"P_MENU_TYPE": "E",
"P_SELECTED_RESP_ID": -999,
};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
@ -32,7 +29,7 @@ class ProfileApiClient {
}, url, postParams);
}
Future<List<GetEmployeeBasicDetailsList>> getEmployeeBasicDetails() async {
Future<List<GetEmployeeBasicDetailsList>> getEmployeeBasicDetails() async {
String url = "${ApiConsts.erpRest}GET_EMPLOYEE_BASIC_DETAILS";
Map<String, dynamic> postParams = {
"P_MENU_TYPE": "E",
@ -70,4 +67,14 @@ class ProfileApiClient {
return responseData.getEmployeeAddressList ?? [];
}, url, postParams);
}
}
Future updateEmpImage(img) async {
String url = "${ApiConsts.erpRest}UPDATE_EMPLOYEE_IMAGE";
Map<String, dynamic> postParams = {"P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": -999, "P_IMAGE": img};
postParams.addAll(AppState().postParamsJson);
return await ApiClient().postJsonForObject((json) {
// GenericResponseModel? responseData = GenericResponseModel.fromJson(json);
return json['UpdateEmployeeImageList'];
}, url, postParams);
}
}

@ -1,7 +1,7 @@
class ApiConsts {
//static String baseUrl = "http://10.200.204.20:2801/"; // Local server
// static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server
static String baseUrl = "https://hmgwebservices.com"; // Live server
static String baseUrl = "https://uat.hmgwebservices.com"; // UAT server
//static String baseUrl = "https://hmgwebservices.com"; // Live server
static String baseUrlServices = baseUrl + "/Services/"; // server
// static String baseUrlServices = "https://api.cssynapses.com/tangheem/"; // Live server
static String utilitiesRest = baseUrlServices + "Utilities.svc/REST/";

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
class ProfileMenu {
final String name;
final IconData icon;
final String icon;
final String route;
ProfileMenu({this.name = '', this.icon = Icons.home, this.route = ''});
ProfileMenu({this.name = '', this.icon = '', this.route = ''});
}

@ -11,6 +11,7 @@ import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
import 'package:mohem_flutter_app/widgets/radio/show_radio.dart';
class BasicDetails extends StatefulWidget {
const BasicDetails({Key? key}) : super(key: key);
@ -150,9 +151,82 @@ class _BasicDetailsState extends State<BasicDetails> {
],
),
child: DefaultButton(LocaleKeys.update.tr(), () async {
// context.setLocale(const Locale("en", "US")); // to change Loacle
Profile();
showAlertDialog(context);
}).insideContainer,
);
}
showAlertDialog(BuildContext context) {
dynamic changeOrNew = 1;
Widget cancelButton = TextButton(
child: Text("Cancel"),
onPressed: () {
Navigator.pop(context);
},
);
Widget continueButton = TextButton(
child: Text("Next"),
onPressed: () {},
);
StatefulBuilder alert = StatefulBuilder(builder: (context, setState) {
return AlertDialog(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(10.0))),
title: Text("Confirm"),
content: Builder(builder: (context) {
// Get available height and width of the build area of this widget. Make a choice depending on the size.
var height = MediaQuery.of(context).size.height * .5;
return Container(
height: height,
child: Column(children: [
Text(
"Select the type of change you want to make.",
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
Divider(),
Column(
children: [
ListTile(
title: Text("correct or complete the current details"),
leading: Radio(
value: 1,
groupValue: changeOrNew,
onChanged: (value) {
setState(() {
changeOrNew = int.parse(value.toString());
});
},
activeColor: Colors.green,
),
),
ListTile(
title: Text("Enter new Information because of a real change to the current details (e.g because of a change in marital status)"),
leading: Radio(
value: 2,
groupValue: changeOrNew,
onChanged: (value) {
setState(() {
changeOrNew = int.parse(value.toString());
});
},
activeColor: Colors.green,
),
),
],
)
]));
}),
actions: [
cancelButton,
continueButton,
],
);
});
showDialog(
context: context,
builder: (BuildContext context) {
return alert;
},
);
}
}

@ -1,17 +1,12 @@
import 'package:easy_localization/src/public_ext.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/colors.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
import 'package:mohem_flutter_app/extensions/int_extensions.dart';
import 'package:mohem_flutter_app/extensions/string_extensions.dart';
import 'package:mohem_flutter_app/extensions/widget_extensions.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/ui/profile/profile.dart';
import 'package:mohem_flutter_app/widgets/app_bar_widget.dart';
import 'package:mohem_flutter_app/widgets/button/default_button.dart';
@ -37,29 +32,30 @@ class _PesonalInfoState extends State<PesonalInfo> {
List<GetEmployeeBasicDetailsList> getEmployeeBasicDetailsList = [];
@override
void initState() {
super.initState();
memberInformationList = AppState().memberInformationList!;
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBarWidget(
context,
title: LocaleKeys.profile_personalInformation.tr(),
),
backgroundColor: MyColors.backgroundColor,
bottomSheet:footer(),
body: Column(
children: [
Container(
backgroundColor: MyColors.backgroundColor,
// bottomSheet:footer(),
body: Column(
children: [
Container(
width: double.infinity,
margin: EdgeInsets.only(top: 28, left: 26, right: 26,),
padding: EdgeInsets.only(left: 14, right: 14,top: 13, bottom: 20),
margin: EdgeInsets.only(
top: 28,
left: 26,
right: 26,
),
padding: EdgeInsets.only(left: 14, right: 14, top: 13, bottom: 20),
height: 350,
decoration: BoxDecoration(
boxShadow: [
@ -70,40 +66,39 @@ class _PesonalInfoState extends State<PesonalInfo> {
offset: Offset(0, 3),
),
],
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
color: Colors.white,
borderRadius: BorderRadius.circular(10.0),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
LocaleKeys.category.tr().toText13(color: MyColors.lightGrayColor),
"${memberInformationList!.eMPLOYMENTCATEGORYMEANING}".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(
height: 20,),
LocaleKeys.address.tr().toText13(color: MyColors.lightGrayColor),
"${memberInformationList!.lOCATIONNAME}".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(
height: 20,),
LocaleKeys.phoneNumber.tr().toText13(color: MyColors.lightGrayColor),
"${memberInformationList!.eMPLOYEEMOBILENUMBER}".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(
height: 20,),
LocaleKeys.businessGroup.tr().toText13(color: MyColors.lightGrayColor),
"${memberInformationList!.bUSINESSGROUPNAME}".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(
height: 20,),
LocaleKeys.Payroll.tr().toText13(color: MyColors.lightGrayColor),
"${memberInformationList!.pAYROLLNAME}".toText16(isBold: true, color: MyColors.blackColor),
]
),
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
LocaleKeys.category.tr().toText13(color: MyColors.lightGrayColor),
"${memberInformationList!.eMPLOYMENTCATEGORYMEANING}".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(
height: 20,
),
],
)
);
LocaleKeys.address.tr().toText13(color: MyColors.lightGrayColor),
"${memberInformationList!.lOCATIONNAME}".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(
height: 20,
),
LocaleKeys.phoneNumber.tr().toText13(color: MyColors.lightGrayColor),
"${memberInformationList!.eMPLOYEEMOBILENUMBER}".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(
height: 20,
),
LocaleKeys.businessGroup.tr().toText13(color: MyColors.lightGrayColor),
"${memberInformationList!.bUSINESSGROUPNAME}".toText16(isBold: true, color: MyColors.blackColor),
SizedBox(
height: 20,
),
LocaleKeys.Payroll.tr().toText13(color: MyColors.lightGrayColor),
"${memberInformationList!.pAYROLLNAME}".toText16(isBold: true, color: MyColors.blackColor),
]),
),
],
));
}
footer(){
footer() {
return Container(
decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10),
@ -112,10 +107,7 @@ class _PesonalInfoState extends State<PesonalInfo> {
BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3),
],
),
child: DefaultButton(LocaleKeys.update.tr(), () async {
// context.setLocale(const Locale("en", "US")); // to change Loacle
Profile();
}).insideContainer,
child: DefaultButton(LocaleKeys.update.tr(), () async {}).insideContainer,
);
}
}

@ -1,7 +1,8 @@
import 'dart:ui';
import 'dart:convert';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:mohem_flutter_app/api/profile_api_client.dart';
import 'package:mohem_flutter_app/app_state/app_state.dart';
import 'package:mohem_flutter_app/classes/utils.dart';
@ -9,6 +10,7 @@ import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
import 'package:mohem_flutter_app/ui/screens/profile/widgets/header.dart';
import 'package:mohem_flutter_app/ui/screens/profile/widgets/profile_panel.dart';
import 'package:mohem_flutter_app/widgets/bottom_sheet.dart';
class ProfileScreen extends StatefulWidget {
const ProfileScreen({Key? key}) : super(key: key);
@ -19,8 +21,8 @@ class ProfileScreen extends StatefulWidget {
class _ProfileScreenState extends State<ProfileScreen> {
late MemberInformationListModel memberInformationList;
List<GetEmployeeBasicDetailsList> getEmployeeBasicDetailsList = [];
final ImagePicker _picker = ImagePicker();
//List<GetEmployeeBasicDetailsList> getEmployeeBasicDetailsList = [];
@override
void initState() {
@ -65,6 +67,9 @@ class _ProfileScreenState extends State<ProfileScreen> {
color: Colors.white,
)),
InkWell(
onTap: () {
startImageSheet();
},
child: Container(
padding: EdgeInsets.only(left: 10, right: 10, top: 5, bottom: 5),
decoration: BoxDecoration(borderRadius: BorderRadius.circular(15), color: Colors.black.withOpacity(.3)),
@ -84,18 +89,61 @@ class _ProfileScreenState extends State<ProfileScreen> {
]));
}
void getEmployeeBasicDetails() async {
try {
startImageSheet() {
showMyBottomSheet(context,
child: Column(
children: [
Container(
padding: EdgeInsets.only(left: 20, right: 20),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [Text('OK'), Text('CANCEL')],
)),
BottomSheetItem(
onTap: () {
openGallery(false);
},
title: 'Open Gallery',
icon: Icons.browse_gallery_outlined,
),
BottomSheetItem(
onTap: () {
openGallery(true);
},
title: 'Open Camera',
icon: Icons.camera,
)
],
));
}
void openGallery(bool isCamera) async {
final XFile? image = await _picker.pickImage(source: isCamera ? ImageSource.camera : ImageSource.gallery);
if (image != null) {
String img = base64.encode(await image!.readAsBytes());
Utils.showLoading(context);
getEmployeeBasicDetailsList = await ProfileApiClient().getEmployeeBasicDetails();
Utils.hideLoading(context);
//basicDetails();
print("getEmployeeBasicDetailsList.length");
print(getEmployeeBasicDetailsList.length);
setState(() {});
} catch (ex) {
dynamic empImageUpdteResp = await ProfileApiClient().updateEmpImage(img);
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
if (empImageUpdteResp['P_RETURN_STATUS'] == 'S') {
setState(() {
memberInformationList.eMPLOYEEIMAGE = img;
});
}
}
}
// void getEmployeeBasicDetails() async {
// try {
// Utils.showLoading(context);
// getEmployeeBasicDetailsList = await ProfileApiClient().getEmployeeBasicDetails();
// Utils.hideLoading(context);
// //basicDetails();
// print("getEmployeeBasicDetailsList.length");
// print(getEmployeeBasicDetailsList.length);
// setState(() {});
// } catch (ex) {
// Utils.hideLoading(context);
// Utils.handleException(ex, context, null);
// }
// }
}

@ -1,5 +1,6 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:mohem_flutter_app/config/routes.dart';
import 'package:mohem_flutter_app/generated/locale_keys.g.dart';
import 'package:mohem_flutter_app/models/member_information_list_model.dart';
@ -12,10 +13,10 @@ class ProfileInFo extends StatelessWidget {
String data = '.';
double sliderValue = 75;
List<ProfileMenu> menu = [
ProfileMenu(name: LocaleKeys.profile_personalInformation.tr(), icon: Icons.info, route: AppRoutes.personalInfo),
ProfileMenu(name: LocaleKeys.profile_basicDetails.tr(), icon: Icons.contacts, route: AppRoutes.basicDetails),
ProfileMenu(name: LocaleKeys.profile_contactDetails.tr(), icon: Icons.location_on, route: AppRoutes.contactDetails),
ProfileMenu(name: LocaleKeys.profile_familyDetails.tr(), icon: Icons.reduce_capacity_sharp, route: AppRoutes.familyMembers),
ProfileMenu(name: LocaleKeys.profile_personalInformation.tr(), icon: 'personal-info.svg', route: AppRoutes.personalInfo),
ProfileMenu(name: LocaleKeys.profile_basicDetails.tr(), icon: 'basic-details.svg', route: AppRoutes.basicDetails),
ProfileMenu(name: LocaleKeys.profile_contactDetails.tr(), icon: 'contact-details.svg', route: AppRoutes.contactDetails),
ProfileMenu(name: LocaleKeys.profile_familyDetails.tr(), icon: 'family-members.svg', route: AppRoutes.familyMembers),
];
@override
Widget build(BuildContext context) {
@ -103,10 +104,7 @@ class ProfileInFo extends StatelessWidget {
Navigator.pushNamed(context, obj.route);
},
child: ListTile(
leading: Icon(
obj.icon,
color: Color(0xff2BB8A6),
),
leading: SvgPicture.asset('assets/images/' + obj.icon),
title: Text(obj.name),
trailing: Icon(Icons.arrow_forward),
),

@ -39,3 +39,42 @@ showMyBottomSheet(BuildContext context, {required Widget child}) {
},
);
}
class BottomSheetItem extends StatelessWidget {
final Function onTap;
final IconData icon;
final String title;
final Color color;
const BottomSheetItem({Key? key, required this.onTap, required this.title, required this.icon, this.color = Colors.black}) : super(key: key);
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {
if (onTap != null) {
Navigator.pop(context);
onTap();
}
},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 18.0, vertical: 18.0),
child: Row(
children: <Widget>[
if (icon != null)
Icon(
icon,
color: color,
size: 18.0,
),
if (icon != null) SizedBox(width: 24.0),
Text(
title ?? "",
style: TextStyle(color: color),
),
],
),
),
);
}
}

@ -7,8 +7,7 @@ import 'package:mohem_flutter_app/extensions/int_extensions.dart';
class ShowRadio extends StatelessWidget {
String title, value, groupValue;
ShowRadio(
{required this.title, required this.value, required this.groupValue});
ShowRadio({required this.title, required this.value, required this.groupValue});
@override
Widget build(BuildContext context) {
@ -34,7 +33,7 @@ class ShowRadio extends StatelessWidget {
),
),
12.width,
title.toText12(isBold: true)
title.toText12(isBold: true, maxLine: 2)
],
);
}

@ -54,7 +54,7 @@ dependencies:
flutter_countdown_timer: ^4.1.0
nfc_manager: ^3.1.1
uuid: ^3.0.6
image_picker: ^0.8.5+3
# maps
google_maps_flutter: ^2.0.2
google_maps_utils: ^1.4.0+1

Loading…
Cancel
Save