register step 2 & fixes
parent
ed24365eff
commit
7321da67e3
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,29 @@
|
||||
import 'dart:convert';
|
||||
|
||||
class NationalityCountries {
|
||||
String? id;
|
||||
String? name;
|
||||
String? nameN;
|
||||
|
||||
NationalityCountries({
|
||||
this.id,
|
||||
this.name,
|
||||
this.nameN,
|
||||
});
|
||||
|
||||
factory NationalityCountries.fromRawJson(String str) => NationalityCountries.fromJson(json.decode(str));
|
||||
|
||||
String toRawJson() => json.encode(toJson());
|
||||
|
||||
factory NationalityCountries.fromJson(Map<String, dynamic> json) => NationalityCountries(
|
||||
id: json["ID"],
|
||||
name: json["Name"],
|
||||
nameN: json["NameN"],
|
||||
);
|
||||
|
||||
Map<String, dynamic> toJson() => {
|
||||
"ID": id,
|
||||
"Name": name,
|
||||
"NameN": nameN,
|
||||
};
|
||||
}
|
||||
@ -0,0 +1,311 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hmg_patient_app_new/core/app_assets.dart';
|
||||
import 'package:hmg_patient_app_new/core/app_state.dart';
|
||||
import 'package:hmg_patient_app_new/core/common_models/nationality_country_model.dart';
|
||||
import 'package:hmg_patient_app_new/core/dependencies.dart';
|
||||
import 'package:hmg_patient_app_new/core/enums.dart';
|
||||
import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/context_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
|
||||
import 'package:hmg_patient_app_new/theme/colors.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/appbar/app_bar_widget.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/bottomsheet/generic_bottom_sheet.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/dropdown/dropdown_widget.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/input_widget.dart';
|
||||
|
||||
class RegisterNewStep2 extends StatefulWidget {
|
||||
var nHICData;
|
||||
var payload;
|
||||
|
||||
RegisterNewStep2(this.nHICData, this.payload, {Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_RegisterNew createState() => _RegisterNew();
|
||||
}
|
||||
|
||||
class _RegisterNew extends State<RegisterNewStep2> {
|
||||
bool isFromDubai = true;
|
||||
List<NationalityCountries> countriesList = [];
|
||||
AppState? appState;
|
||||
GenderTypeEnum? selectedGenderType;
|
||||
MaritalStatusTypeEnum? selectedMaritalStatusType;
|
||||
CountryEnum? selectedCountry;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
// isFromDubai = widget.payload.zipCode!.contains("971") || widget.payload.zipCode!.contains("+971");
|
||||
loadCountriesList();
|
||||
}
|
||||
|
||||
loadCountriesList() async {
|
||||
appState = getIt.get<AppState>();
|
||||
final String response = await DefaultAssetBundle.of(context).loadString('assets/json/countriesList.json');
|
||||
final List<dynamic> data = json.decode(response);
|
||||
countriesList = data.map((e) => NationalityCountries.fromJson(e)).toList();
|
||||
}
|
||||
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: CustomAppBar(onBackPressed: () {}, onLanguageChanged: (lang) {}, hideLogoAndLang: true,),
|
||||
body: SingleChildScrollView(
|
||||
reverse: false,
|
||||
padding: EdgeInsets.only(left: 24.h, right: 24.h, top: 24.h),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Directionality(
|
||||
textDirection: Directionality.of(context),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(24)),
|
||||
padding: EdgeInsets.only(left: 16.h, right: 16.h),
|
||||
child: Column(
|
||||
children: [
|
||||
TextInputWidget(
|
||||
labelText: isFromDubai ? LocaleKeys.fullName.tr() : LocaleKeys.name.tr(),
|
||||
hintText: isFromDubai ? "name" ?? "" : (widget.nHICData!.firstNameEn!.toUpperCase() + " " + widget.nHICData!.lastNameEn!.toUpperCase()),
|
||||
controller: null,
|
||||
isEnable: true,
|
||||
prefix: null,
|
||||
isAllowRadius: false,
|
||||
isBorderAllowed: false,
|
||||
keyboardType: TextInputType.text,
|
||||
isAllowLeadingIcon: true,
|
||||
isReadOnly: isFromDubai ? false : true,
|
||||
leadingIcon: AppAssets.user_circle),
|
||||
Divider(height: 1),
|
||||
TextInputWidget(
|
||||
labelText: LocaleKeys.nationalIdNumber.tr(),
|
||||
hintText: isFromDubai ? "widget.payload.nationalID!" : (widget.nHICData!.idNumber ?? ""),
|
||||
controller: null,
|
||||
isEnable: true,
|
||||
prefix: null,
|
||||
isAllowRadius: false,
|
||||
isBorderAllowed: false,
|
||||
isAllowLeadingIcon: true,
|
||||
isReadOnly: true,
|
||||
leadingIcon: AppAssets.student_card),
|
||||
Divider(height: 1),
|
||||
isFromDubai
|
||||
? DropdownWidget(
|
||||
labelText: LocaleKeys.gender.tr(),
|
||||
hintText: LocaleKeys.malE.tr(),
|
||||
isEnable: true,
|
||||
dropdownItems: GenderTypeEnum.values.map((e) => appState!.isArabic() ? e.typeAr : e.type).toList(),
|
||||
selectedValue: appState!.isArabic() ? selectedGenderType!.typeAr : selectedGenderType?.type,
|
||||
// selectionType: SelectionType.dropdown,
|
||||
onChange: (val) {
|
||||
if (val != null) {}
|
||||
},
|
||||
isBorderAllowed: false,
|
||||
hasSelectionCustomIcon: true,
|
||||
isAllowRadius: false,
|
||||
padding: const EdgeInsets.only(top: 8, bottom: 8, left: 0, right: 0),
|
||||
selectionCustomIcon: AppAssets.arrow_down,
|
||||
// leadingIcon: 'assets/images/svg/user-full.svg',
|
||||
).withVerticalPadding(8)
|
||||
: TextInputWidget(
|
||||
labelText: LocaleKeys.gender.tr(),
|
||||
hintText: (widget.nHICData!.gender ?? ""),
|
||||
controller: null,
|
||||
isEnable: true,
|
||||
prefix: null,
|
||||
isAllowRadius: false,
|
||||
isBorderAllowed: false,
|
||||
isAllowLeadingIcon: true,
|
||||
isReadOnly: isFromDubai ? false : true,
|
||||
leadingIcon: AppAssets.user_full,
|
||||
onChange: (value) {}),
|
||||
Divider(height: 1),
|
||||
isFromDubai
|
||||
? DropdownWidget(
|
||||
labelText: LocaleKeys.maritalStatus.tr(),
|
||||
hintText: LocaleKeys.married.tr(),
|
||||
isEnable: true,
|
||||
dropdownItems: MaritalStatusTypeEnum.values.map((e) => appState!.isArabic() ? e.typeAr : e.type).toList(),
|
||||
selectedValue: appState!.isArabic() ? selectedMaritalStatusType!.typeAr : selectedMaritalStatusType?.type,
|
||||
onChange: (val) {},
|
||||
isBorderAllowed: false,
|
||||
hasSelectionCustomIcon: true,
|
||||
isAllowRadius: false,
|
||||
padding: const EdgeInsets.only(top: 8, bottom: 8, left: 0, right: 0),
|
||||
selectionCustomIcon: AppAssets.arrow_down,
|
||||
// leadingIcon: 'assets/images/svg/smart-phone.svg',
|
||||
).withVerticalPadding(8)
|
||||
: TextInputWidget(
|
||||
labelText: LocaleKeys.maritalStatus.tr(),
|
||||
hintText: appState!.isArabic()
|
||||
? (MaritalStatusTypeExtension.fromValue(widget.nHICData!.maritalStatusCode)!.typeAr)
|
||||
: (MaritalStatusTypeExtension.fromValue(widget.nHICData!.maritalStatusCode)!.type),
|
||||
isEnable: true,
|
||||
prefix: null,
|
||||
isAllowRadius: false,
|
||||
isBorderAllowed: false,
|
||||
isAllowLeadingIcon: true,
|
||||
isReadOnly: true,
|
||||
leadingIcon: AppAssets.smart_phone,
|
||||
onChange: (value) {}),
|
||||
Divider(height: 1),
|
||||
isFromDubai
|
||||
? DropdownWidget(
|
||||
labelText: LocaleKeys.country.tr(),
|
||||
hintText: LocaleKeys.uae.tr(),
|
||||
isEnable: true,
|
||||
dropdownItems: countriesList.map((e) => appState!.isArabic() ? e.nameN ?? "" : e.name ?? "").toList(),
|
||||
selectedValue: appState!.isArabic() ? selectedCountry!.nameArabic ?? "" : selectedCountry?.name ?? "",
|
||||
onChange: (val) {},
|
||||
isBorderAllowed: false,
|
||||
hasSelectionCustomIcon: true,
|
||||
isAllowRadius: false,
|
||||
padding: const EdgeInsets.only(top: 8, bottom: 8, left: 0, right: 0),
|
||||
selectionCustomIcon: AppAssets.arrow_down,
|
||||
// leadingIcon: 'assets/images/svg/globe.svg',
|
||||
).withVerticalPadding(8)
|
||||
: TextInputWidget(
|
||||
labelText: LocaleKeys.nationality.tr(),
|
||||
hintText: appState!.isArabic()
|
||||
? (countriesList.firstWhere((e) => e.id == (widget.nHICData!.nationalityCode ?? ""), orElse: () => NationalityCountries()).nameN ?? "")
|
||||
: (countriesList.firstWhere((e) => e.id == (widget.nHICData!.nationalityCode ?? ""), orElse: () => NationalityCountries()).name ?? ""),
|
||||
isEnable: true,
|
||||
prefix: null,
|
||||
isAllowRadius: false,
|
||||
isBorderAllowed: false,
|
||||
isAllowLeadingIcon: true,
|
||||
isReadOnly: true,
|
||||
leadingIcon: AppAssets.globe,
|
||||
onChange: (value) {}),
|
||||
Divider(height: 1),
|
||||
TextInputWidget(
|
||||
labelText: LocaleKeys.mobileNumber.tr(),
|
||||
hintText: ("widget.payload.mobileNo" ?? ""),
|
||||
controller: null,
|
||||
isEnable: true,
|
||||
prefix: null,
|
||||
isAllowRadius: false,
|
||||
isBorderAllowed: false,
|
||||
isAllowLeadingIcon: true,
|
||||
isReadOnly: true,
|
||||
leadingIcon: AppAssets.call,
|
||||
onChange: (value) {}),
|
||||
Divider(height: 1),
|
||||
TextInputWidget(
|
||||
labelText: LocaleKeys.dob.tr(),
|
||||
hintText: isFromDubai ? "widget.payload.dob!" : (widget.nHICData!.dateOfBirth ?? ""),
|
||||
controller: null,
|
||||
isEnable: true,
|
||||
prefix: null,
|
||||
isBorderAllowed: false,
|
||||
isAllowLeadingIcon: true,
|
||||
isReadOnly: true,
|
||||
// selectionType: SelectionType.calendar,
|
||||
// selectedValue: widget.payload.dob != null ? Utils.formatDateToDisplay(widget.payload.dob.toString()) : null,
|
||||
// selectionCustomIcon: AppAssets.calendar,
|
||||
// leadingIcon: AppAssets.birthday_cake,
|
||||
onChange: (value) {}),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 50.h),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: CustomButton(
|
||||
text: LocaleKeys.cancel,
|
||||
icon: AppAssets.cancel,
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
// fontFamily: context.fontFamily,
|
||||
backgroundColor: AppColors.secondaryLightRedColor,
|
||||
borderColor: AppColors.secondaryLightRedColor,
|
||||
textColor: AppColors.primaryRedColor,
|
||||
iconColor: AppColors.primaryRedColor,
|
||||
),
|
||||
),
|
||||
SizedBox(
|
||||
width: 16,
|
||||
),
|
||||
Expanded(
|
||||
child: CustomButton(
|
||||
backgroundColor: AppColors.lightGreenColor,
|
||||
borderColor: AppColors.lightGreenColor,
|
||||
textColor: AppColors.textGreenColor,
|
||||
text: LocaleKeys.confirm.tr(),
|
||||
icon: AppAssets.confirm,
|
||||
iconColor: AppColors.textGreenColor,
|
||||
onPressed: () {
|
||||
// if (isFromDubai) {
|
||||
// if (name == null) {
|
||||
// AppToast.showErrorToast(message: LocaleKeys.enterFullName);
|
||||
// return;
|
||||
// }
|
||||
// if (!name!.contains(" ")) if (selectedGenderType == null) {
|
||||
// AppToast.showErrorToast(message: TranslationBase.of(context).enterFullName);
|
||||
// return;
|
||||
// }
|
||||
// if (selectedMaritalStatusType == null) {
|
||||
// AppToast.showErrorToast(message: TranslationBase.of(context).chooseMaritalStatus);
|
||||
// return;
|
||||
// }
|
||||
// if (selectedCountry == null) {
|
||||
// AppToast.showErrorToast(message: TranslationBase.of(context).chooseCountry);
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
|
||||
showModel(context: context);
|
||||
},
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void showModel({required BuildContext context}) {
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
isScrollControlled: true,
|
||||
isDismissible: false,
|
||||
backgroundColor: Colors.transparent,
|
||||
builder: (bottomSheetContext) => Padding(
|
||||
padding: EdgeInsets.only(bottom: MediaQuery.of(bottomSheetContext).viewInsets.bottom),
|
||||
child: SingleChildScrollView(
|
||||
child: GenericBottomSheet(
|
||||
textController: TextEditingController(),
|
||||
isForEmail: true,
|
||||
buttons: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(bottom: 10),
|
||||
child: CustomButton(
|
||||
text: LocaleKeys.submit,
|
||||
onPressed: () {
|
||||
// if (emailAddress.text.isEmpty) {
|
||||
// Utils.showErrorToast(TranslationBase.of(context).enterEmailAddress);
|
||||
// return;
|
||||
// } else {
|
||||
// Navigator.of(context).pop();
|
||||
// registerNow();
|
||||
// }
|
||||
},
|
||||
backgroundColor: AppColors.bgGreenColor,
|
||||
borderColor: AppColors.bgGreenColor,
|
||||
textColor: AppColors.whiteColor),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue