Add new mih text form field to Set Up Business

This commit is contained in:
2025-06-04 12:30:22 +02:00
parent 2ca97f1ef2
commit 1d8663919a

View File

@@ -6,13 +6,15 @@ import 'package:mzansi_innovation_hub/mih_apis/mih_business_details_apis.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_file_api.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_file_api.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_location_api.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_location_api.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_my_business_user_apis.dart'; import 'package:mzansi_innovation_hub/mih_apis/mih_my_business_user_apis.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_validation_services.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_dropdown_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_inputs_and_buttons/mih_text_input.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_action.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_action.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_header.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_header.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_layout_builder.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_layout_builder.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_button.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_button.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_form.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_text_form_field.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_error_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_error_message.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_success_message.dart';
import 'package:mzansi_innovation_hub/mih_env/env.dart'; import 'package:mzansi_innovation_hub/mih_env/env.dart';
@@ -60,6 +62,7 @@ class _ProfileBusinessAddState extends State<ProfileBusinessAdd> {
PlatformFile? selectedSignature; PlatformFile? selectedSignature;
final ValueNotifier<String> busType = ValueNotifier(""); final ValueNotifier<String> busType = ValueNotifier("");
final _formKey = GlobalKey<FormState>();
late String env; late String env;
// Future<void> uploadSelectedFile( // Future<void> uploadSelectedFile(
@@ -217,17 +220,9 @@ class _ProfileBusinessAddState extends State<ProfileBusinessAdd> {
} }
bool isFieldsFilled() { bool isFieldsFilled() {
if (nameController.text.isEmpty || if (typeController.text.isEmpty ||
typeController.text.isEmpty ||
regController.text.isEmpty ||
// logonameController.text.isEmpty ||
fnameController.text.isEmpty ||
lnameController.text.isEmpty ||
titleController.text.isEmpty || titleController.text.isEmpty ||
// signtureController.text.isEmpty || accessController.text.isEmpty) {
accessController.text.isEmpty ||
contactController.text.isEmpty ||
emailController.text.isEmpty) {
return false; return false;
} else { } else {
return true; return true;
@@ -235,9 +230,7 @@ class _ProfileBusinessAddState extends State<ProfileBusinessAdd> {
} }
void submitForm() { void submitForm() {
if (!isEmailValid()) { if (isFieldsFilled()) {
emailError();
} else if (isFieldsFilled()) {
print("Inside submit method"); print("Inside submit method");
createBusinessProfileAPICall(); createBusinessProfileAPICall();
} else { } else {
@@ -306,7 +299,7 @@ class _ProfileBusinessAddState extends State<ProfileBusinessAdd> {
MIHBody getBody() { MIHBody getBody() {
return MIHBody( return MIHBody(
borderOn: true, borderOn: false,
bodyItems: [ bodyItems: [
KeyboardListener( KeyboardListener(
focusNode: _focusNode, focusNode: _focusNode,
@@ -314,13 +307,14 @@ class _ProfileBusinessAddState extends State<ProfileBusinessAdd> {
onKeyEvent: (event) async { onKeyEvent: (event) async {
if (event is KeyDownEvent && if (event is KeyDownEvent &&
event.logicalKey == LogicalKeyboardKey.enter) { event.logicalKey == LogicalKeyboardKey.enter) {
if (_formKey.currentState!.validate()) {
submitForm(); submitForm();
} }
}
}, },
child: SingleChildScrollView( child: SingleChildScrollView(
child: Column( child: Column(
children: [ children: [
//const SizedBox(height: 15),
const Text( const Text(
"My Business Details", "My Business Details",
style: TextStyle( style: TextStyle(
@@ -333,47 +327,51 @@ class _ProfileBusinessAddState extends State<ProfileBusinessAdd> {
.theme .theme
.secondaryColor()), .secondaryColor()),
const SizedBox(height: 10.0), const SizedBox(height: 10.0),
// MihCircleAvatar( MihForm(
// imageFile: logoPreview, formKey: _formKey,
// width: 150, formFields: [
MihTextFormField(
fillColor: MzanziInnovationHub.of(context)!
.theme
.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: regController,
multiLineInput: false,
requiredText: true,
hintText: "Registration No.",
validator: (value) {
return MihValidationServices().isEmpty(value);
},
),
// MIHTextField(
// controller: regController,
// hintText: "Registration No.",
// editable: true, // editable: true,
// fileNameController: logonameController,
// userSelectedfile: selectedLogo,
// frameColor:
// MzanziInnovationHub.of(context)!.theme.secondaryColor(),
// backgroundColor:
// MzanziInnovationHub.of(context)!.theme.primaryColor(),
// onChange: (selectedfile) {
// setState(() {
// selectedLogo = selectedfile;
// });
// },
// ),
// const SizedBox(height: 10.0),
// Visibility(
// visible: true,
// child: MIHTextField(
// controller: logonameController,
// hintText: "Selected Logo File Name",
// editable: false,
// required: true, // required: true,
// ), // ),
// ),
// const SizedBox(height: 10.0),
MIHTextField(
controller: regController,
hintText: "Registration No.",
editable: true,
required: true,
),
const SizedBox(height: 10.0), const SizedBox(height: 10.0),
MIHTextField( MihTextFormField(
fillColor: MzanziInnovationHub.of(context)!
.theme
.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: nameController, controller: nameController,
multiLineInput: false,
requiredText: true,
hintText: "Business Name", hintText: "Business Name",
editable: true, validator: (value) {
required: true, return MihValidationServices().isEmpty(value);
},
), ),
const SizedBox(height: 10.0), // MIHTextField(
// controller: nameController,
// hintText: "Business Name",
// editable: true,
// required: true,
// ),
const SizedBox(height: 15.0),
MIHDropdownField( MIHDropdownField(
controller: typeController, controller: typeController,
hintText: "Business Type", hintText: "Business Type",
@@ -385,71 +383,125 @@ class _ProfileBusinessAddState extends State<ProfileBusinessAdd> {
const SizedBox(height: 10.0), const SizedBox(height: 10.0),
ValueListenableBuilder( ValueListenableBuilder(
valueListenable: busType, valueListenable: busType,
builder: (BuildContext context, String value, Widget? child) { builder:
(BuildContext context, String value, Widget? child) {
return Visibility( return Visibility(
visible: value == "Doctors Office", visible: value == "Doctors Office",
child: MIHTextField( child: MihTextFormField(
fillColor: MzanziInnovationHub.of(context)!
.theme
.secondaryColor(),
inputColor: MzanziInnovationHub.of(context)!
.theme
.primaryColor(),
controller: practiceNoController, controller: practiceNoController,
multiLineInput: false,
requiredText: true,
hintText: "Practice Number", hintText: "Practice Number",
editable: true, validator: (validateValue) {
required: true, if (value == "Doctors Office") {
return MihValidationServices()
.isEmpty(validateValue);
}
return null;
},
), ),
); );
// MIHTextField(
// controller: practiceNoController,
// hintText: "Practice Number",
// editable: true,
// required: true,
// ),
// );
}, },
), ),
const SizedBox(height: 10.0), const SizedBox(height: 10.0),
MIHTextField( MihTextFormField(
fillColor: MzanziInnovationHub.of(context)!
.theme
.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: vatNoController, controller: vatNoController,
multiLineInput: false,
requiredText: true,
hintText: "VAT Number", hintText: "VAT Number",
editable: true, validator: (value) {
required: true, return MihValidationServices().isEmpty(value);
},
), ),
const SizedBox(height: 10.0), // MIHTextField(
MIHTextField( // controller: vatNoController,
controller: contactController, // hintText: "VAT Number",
hintText: "Contact Number", // editable: true,
editable: true, // required: true,
required: true, // ),
), const SizedBox(height: 10.0),
const SizedBox(height: 10.0), MihTextFormField(
MIHTextField( fillColor: MzanziInnovationHub.of(context)!
controller: emailController, .theme
hintText: "Email", .secondaryColor(),
editable: true, inputColor:
required: true, MzanziInnovationHub.of(context)!.theme.primaryColor(),
), controller: contactController,
const SizedBox(height: 10.0), multiLineInput: false,
// MIHFileField( requiredText: true,
// controller: logonameController, hintText: "Contact Number",
// hintText: "Logo", validator: (value) {
// editable: false, return MihValidationServices().isEmpty(value);
},
),
// MIHTextField(
// controller: contactController,
// hintText: "Contact Number",
// editable: true,
// required: true,
// ),
const SizedBox(height: 10.0),
MihTextFormField(
fillColor: MzanziInnovationHub.of(context)!
.theme
.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: emailController,
multiLineInput: false,
requiredText: true,
hintText: "Business Email",
validator: (value) {
return MihValidationServices().validateEmail(value);
},
),
// MIHTextField(
// controller: emailController,
// hintText: "Email",
// editable: true,
// required: true, // required: true,
// onPressed: () async {
// FilePickerResult? result =
// await FilePicker.platform.pickFiles(
// type: FileType.custom,
// allowedExtensions: ['jpg', 'png', 'pdf'],
// );
// if (result == null) return;
// final selectedFile = result.files.first;
// setState(() {
// selectedLogo = selectedFile;
// });
// setState(() {
// logonameController.text = selectedFile.name;
// });
// },
// ), // ),
const SizedBox(height: 10.0), const SizedBox(height: 10.0),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
Flexible( Flexible(
child: MIHTextField( child: MihTextFormField(
fillColor: MzanziInnovationHub.of(context)!
.theme
.secondaryColor(),
inputColor: MzanziInnovationHub.of(context)!
.theme
.primaryColor(),
controller: locationController, controller: locationController,
hintText: "Location", multiLineInput: false,
editable: false, requiredText: true,
required: false, hintText: "GPS Location",
), ),
// MIHTextField(
// controller: locationController,
// hintText: "Location",
// editable: false,
// required: false,
// ),
), ),
const SizedBox(width: 10.0), const SizedBox(width: 10.0),
MihButton( MihButton(
@@ -482,20 +534,17 @@ class _ProfileBusinessAddState extends State<ProfileBusinessAdd> {
), ),
], ],
), ),
const SizedBox(height: 15.0), const SizedBox(height: 15.0),
Divider(
color:
MzanziInnovationHub.of(context)?.theme.secondaryColor(),
),
//const SizedBox(height: 15.0), //const SizedBox(height: 15.0),
const Text( const Center(
child: Text(
"My Business User", "My Business User",
style: TextStyle( style: TextStyle(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 22, fontSize: 22,
), ),
), ),
),
Divider( Divider(
color: MzanziInnovationHub.of(context)! color: MzanziInnovationHub.of(context)!
.theme .theme
@@ -510,19 +559,47 @@ class _ProfileBusinessAddState extends State<ProfileBusinessAdd> {
enableSearch: false, enableSearch: false,
), ),
const SizedBox(height: 10.0), const SizedBox(height: 10.0),
MIHTextField( MihTextFormField(
fillColor: MzanziInnovationHub.of(context)!
.theme
.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: fnameController, controller: fnameController,
hintText: "Name", multiLineInput: false,
editable: false, requiredText: true,
required: true, hintText: "First Name",
validator: (value) {
return MihValidationServices().isEmpty(value);
},
), ),
// MIHTextField(
// controller: fnameController,
// hintText: "Name",
// editable: false,
// required: true,
// ),
const SizedBox(height: 10.0), const SizedBox(height: 10.0),
MIHTextField( MihTextFormField(
fillColor: MzanziInnovationHub.of(context)!
.theme
.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: lnameController, controller: lnameController,
multiLineInput: false,
requiredText: true,
hintText: "Surname", hintText: "Surname",
editable: false, validator: (value) {
required: true, return MihValidationServices().isEmpty(value);
},
), ),
// MIHTextField(
// controller: lnameController,
// hintText: "Surname",
// editable: false,
// required: true,
// ),
const SizedBox(height: 15.0), const SizedBox(height: 15.0),
MIHDropdownField( MIHDropdownField(
controller: accessController, controller: accessController,
@@ -532,24 +609,32 @@ class _ProfileBusinessAddState extends State<ProfileBusinessAdd> {
editable: false, editable: false,
enableSearch: false, enableSearch: false,
), ),
const SizedBox(height: 30.0), const SizedBox(height: 20.0),
MihButton( Center(
child: MihButton(
onPressed: () { onPressed: () {
if (_formKey.currentState!.validate()) {
submitForm(); submitForm();
}
}, },
buttonColor: buttonColor: MzanziInnovationHub.of(context)!
MzanziInnovationHub.of(context)!.theme.secondaryColor(), .theme
.secondaryColor(),
width: 300, width: 300,
child: Text( child: Text(
"Add", "Add",
style: TextStyle( style: TextStyle(
color: color: MzanziInnovationHub.of(context)!
MzanziInnovationHub.of(context)!.theme.primaryColor(), .theme
.primaryColor(),
fontSize: 20, fontSize: 20,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
), ),
),
],
),
], ],
), ),
), ),