Add new mih text form field to Business Profile

This commit is contained in:
2025-06-04 13:39:02 +02:00
parent 6b6697789e
commit d1716db1e7
4 changed files with 526 additions and 370 deletions

View File

@@ -3,9 +3,10 @@ import 'dart:convert';
import 'package:flutter_speed_dial/flutter_speed_dial.dart'; import 'package:flutter_speed_dial/flutter_speed_dial.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.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_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_package_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_delete_message.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_delete_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_error_message.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart';
@@ -36,6 +37,7 @@ class _BuildEmployeeListState extends State<BuildEmployeeList> {
TextEditingController fnameController = TextEditingController(); TextEditingController fnameController = TextEditingController();
TextEditingController lnameController = TextEditingController(); TextEditingController lnameController = TextEditingController();
final _formKey = GlobalKey<FormState>();
final baseAPI = AppEnviroment.baseApiUrl; final baseAPI = AppEnviroment.baseApiUrl;
Future<void> updateEmployeeAPICall(int index) async { Future<void> updateEmployeeAPICall(int index) async {
@@ -178,21 +180,33 @@ class _BuildEmployeeListState extends State<BuildEmployeeList> {
}, },
windowBody: Column( windowBody: Column(
children: [ children: [
const SizedBox(height: 10.0), MihForm(
MIHTextField( formKey: _formKey,
formFields: [
MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: fnameController, controller: fnameController,
multiLineInput: false,
requiredText: true,
readOnly: true,
hintText: "First Name", hintText: "First 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,
readOnly: true,
hintText: "Surname", hintText: "Surname",
editable: false,
required: true,
), ),
const SizedBox(height: 10.0), const SizedBox(height: 15.0),
MIHDropdownField( MIHDropdownField(
controller: typeController, controller: typeController,
hintText: "Title", hintText: "Title",
@@ -210,19 +224,23 @@ class _BuildEmployeeListState extends State<BuildEmployeeList> {
editable: true, editable: true,
enableSearch: false, enableSearch: false,
), ),
const SizedBox(height: 15.0), const SizedBox(height: 20.0),
MihButton( Center(
child: MihButton(
onPressed: () { onPressed: () {
if (_formKey.currentState!.validate()) {
if (isRequiredFieldsCaptured()) { if (isRequiredFieldsCaptured()) {
updateEmployeeAPICall(index); updateEmployeeAPICall(index);
} else { } else {
showDialog( showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
return const MIHErrorMessage(errorType: "Input Error"); return const MIHErrorMessage(
errorType: "Input Error");
}, },
); );
} }
}
}, },
buttonColor: buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(), MzanziInnovationHub.of(context)!.theme.secondaryColor(),
@@ -230,12 +248,17 @@ class _BuildEmployeeListState extends State<BuildEmployeeList> {
child: Text( child: Text(
"Update", "Update",
style: TextStyle( style: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(), color: MzanziInnovationHub.of(context)!
.theme
.primaryColor(),
fontSize: 20, fontSize: 20,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
), ),
),
],
),
], ],
), ),
), ),

View File

@@ -2,9 +2,10 @@ import 'dart:convert';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.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_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_package_window.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_window.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_loading_circle.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.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';
@@ -31,9 +32,10 @@ class BuildUserList extends StatefulWidget {
class _BuildUserListState extends State<BuildUserList> { class _BuildUserListState extends State<BuildUserList> {
TextEditingController accessController = TextEditingController(); TextEditingController accessController = TextEditingController();
TextEditingController typeController = TextEditingController(); TextEditingController typeController = TextEditingController();
TextEditingController fnameController = TextEditingController(); TextEditingController usernameController = TextEditingController();
TextEditingController lnameController = TextEditingController(); TextEditingController emailController = TextEditingController();
final _formKey = GlobalKey<FormState>();
final baseAPI = AppEnviroment.baseApiUrl; final baseAPI = AppEnviroment.baseApiUrl;
Future<void> createBusinessUserAPICall(int index) async { Future<void> createBusinessUserAPICall(int index) async {
@@ -118,8 +120,8 @@ class _BuildUserListState extends State<BuildUserList> {
//typeController.text = widget.users[index].title; //typeController.text = widget.users[index].title;
// var fnameInitial = widget.users[index].fname[0]; // var fnameInitial = widget.users[index].fname[0];
// var lnameInitial = widget.users[index].lname[0]; // var lnameInitial = widget.users[index].lname[0];
fnameController.text = widget.users[index].username; usernameController.text = widget.users[index].username;
lnameController.text = hideEmail(widget.users[index].email); emailController.text = hideEmail(widget.users[index].email);
}); });
showDialog( showDialog(
context: context, context: context,
@@ -129,21 +131,35 @@ class _BuildUserListState extends State<BuildUserList> {
windowTitle: "Add Employee", windowTitle: "Add Employee",
windowBody: Column( windowBody: Column(
children: [ children: [
const SizedBox(height: 10.0), MihForm(
MIHTextField( formKey: _formKey,
controller: fnameController, formFields: [
hintText: "Username Name", MihTextFormField(
editable: false, fillColor: MzanziInnovationHub.of(context)!
required: true, .theme
.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: usernameController,
multiLineInput: false,
requiredText: true,
readOnly: true,
hintText: "Username",
), ),
const SizedBox(height: 10.0), const SizedBox(height: 10.0),
MIHTextField( MihTextFormField(
controller: lnameController, fillColor: MzanziInnovationHub.of(context)!
.theme
.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: emailController,
multiLineInput: false,
requiredText: true,
readOnly: true,
hintText: "Email", hintText: "Email",
editable: false,
required: true,
), ),
const SizedBox(height: 10.0), const SizedBox(height: 15.0),
MIHDropdownField( MIHDropdownField(
controller: typeController, controller: typeController,
hintText: "Title", hintText: "Title",
@@ -162,8 +178,10 @@ class _BuildUserListState extends State<BuildUserList> {
enableSearch: false, enableSearch: false,
), ),
const SizedBox(height: 15.0), const SizedBox(height: 15.0),
MihButton( Center(
child: MihButton(
onPressed: () { onPressed: () {
if (_formKey.currentState!.validate()) {
if (isRequiredFieldsCaptured()) { if (isRequiredFieldsCaptured()) {
createBusinessUserAPICall(index); createBusinessUserAPICall(index);
} else { } else {
@@ -175,23 +193,29 @@ class _BuildUserListState extends State<BuildUserList> {
}, },
); );
} }
}
}, },
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,
), ),
), ),
), ),
),
const SizedBox(height: 10.0), const SizedBox(height: 10.0),
], ],
), ),
],
),
onWindowTapClose: () { onWindowTapClose: () {
Navigator.pop(context); Navigator.pop(context);
})); }));
@@ -201,8 +225,8 @@ class _BuildUserListState extends State<BuildUserList> {
void dispose() { void dispose() {
accessController.dispose(); accessController.dispose();
typeController.dispose(); typeController.dispose();
fnameController.dispose(); usernameController.dispose();
lnameController.dispose(); emailController.dispose();
super.dispose(); super.dispose();
} }

View File

@@ -4,12 +4,15 @@ import 'package:mzansi_innovation_hub/main.dart';
import 'package:mzansi_innovation_hub/mih_apis/mih_business_details_apis.dart'; 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_components/mih_inputs_and_buttons/mih_text_input.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_layout/mih_single_child_scroll.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_single_child_scroll.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_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.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';
@@ -39,17 +42,11 @@ class _MihBusinessDetailsState extends State<MihBusinessDetails> {
final contactController = TextEditingController(); final contactController = TextEditingController();
final emailController = TextEditingController(); final emailController = TextEditingController();
final locationController = TextEditingController(); final locationController = TextEditingController();
final _formKey = GlobalKey<FormState>();
late String env; late String env;
Future<void> submitForm() async { Future<void> submitForm() async {
if (!isEmailValid()) { if (isFormFilled()) {
showDialog(
context: context,
builder: (context) {
return const MIHErrorMessage(errorType: "Invalid Email");
},
);
} else if (isFormFilled()) {
int statusCode = 0; int statusCode = 0;
statusCode = await MihBusinessDetailsApi().updateBusinessDetails( statusCode = await MihBusinessDetailsApi().updateBusinessDetails(
widget.arguments.business!.business_id, widget.arguments.business!.business_id,
@@ -180,14 +177,7 @@ class _MihBusinessDetailsState extends State<MihBusinessDetails> {
} }
bool isFormFilled() { bool isFormFilled() {
if (regController.text.isEmpty || if (typeController.text.isEmpty) {
nameController.text.isEmpty ||
typeController.text.isEmpty ||
practiceNoController.text.isEmpty ||
vatNoController.text.isEmpty ||
contactController.text.isEmpty ||
emailController.text.isEmpty ||
locationController.text.isEmpty) {
return false; return false;
} else { } else {
return true; return true;
@@ -244,13 +234,18 @@ class _MihBusinessDetailsState extends State<MihBusinessDetails> {
return MihSingleChildScroll( return MihSingleChildScroll(
child: Column( child: Column(
children: [ children: [
MihCircleAvatar( MihForm(
formKey: _formKey,
formFields: [
Center(
child: MihCircleAvatar(
imageFile: widget.logoImage, imageFile: widget.logoImage,
width: 150, width: 150,
editable: true, editable: true,
fileNameController: fileNameController, fileNameController: fileNameController,
userSelectedfile: imageFile, userSelectedfile: imageFile,
frameColor: MzanziInnovationHub.of(context)!.theme.secondaryColor(), frameColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
backgroundColor: backgroundColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(), MzanziInnovationHub.of(context)!.theme.primaryColor(),
onChange: (selectedfile) { onChange: (selectedfile) {
@@ -259,73 +254,122 @@ class _MihBusinessDetailsState extends State<MihBusinessDetails> {
}); });
}, },
), ),
),
Visibility( Visibility(
visible: false, visible: false,
child: MIHTextField( child: MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: fileNameController, controller: fileNameController,
multiLineInput: false,
requiredText: true,
readOnly: true,
hintText: "Selected File Name", hintText: "Selected File Name",
editable: false,
required: false,
), ),
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
MIHTextField( MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: regController, controller: regController,
multiLineInput: false,
requiredText: true,
hintText: "Registration No.", hintText: "Registration No.",
editable: true, validator: (value) {
required: true, return MihValidationServices().isEmpty(value);
},
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
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), const SizedBox(height: 15),
MIHTextField( MIHDropdownField(
controller: typeController, controller: typeController,
hintText: "Business Type", hintText: "Business Type",
editable: true, dropdownOptions: const ["Doctors Office", "Other"],
required: true, required: true,
editable: true,
enableSearch: false,
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
MIHTextField( MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: practiceNoController, controller: practiceNoController,
multiLineInput: false,
requiredText: typeController.text == "Doctors Office",
hintText: "Practice Number", hintText: "Practice Number",
editable: true, validator: (validateValue) {
required: true, return MihValidationServices().isEmpty(validateValue);
},
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
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), const SizedBox(height: 10),
MIHTextField( MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: contactController, controller: contactController,
multiLineInput: false,
requiredText: true,
hintText: "Contact Number", hintText: "Contact Number",
editable: true, validator: (value) {
required: true, return MihValidationServices().isEmpty(value);
},
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
MIHTextField( MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor: MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: emailController, controller: emailController,
hintText: "Email", multiLineInput: false,
editable: true, requiredText: true,
required: true, hintText: "Business Email",
validator: (value) {
return MihValidationServices().validateEmail(value);
},
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
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",
), ),
), ),
const SizedBox(width: 10.0), const SizedBox(width: 10.0),
@@ -346,7 +390,8 @@ class _MihBusinessDetailsState extends State<MihBusinessDetails> {
child: Text( child: Text(
"Set", "Set",
style: TextStyle( style: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(), color:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontSize: 20, fontSize: 20,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
@@ -355,21 +400,30 @@ class _MihBusinessDetailsState extends State<MihBusinessDetails> {
], ],
), ),
const SizedBox(height: 15), const SizedBox(height: 15),
MihButton( Center(
child: MihButton(
onPressed: () { onPressed: () {
if (_formKey.currentState!.validate()) {
submitForm(); submitForm();
}
}, },
buttonColor: MzanziInnovationHub.of(context)!.theme.secondaryColor(), buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
width: 300, width: 300,
child: Text( child: Text(
"Update", "Update",
style: TextStyle( style: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(), color:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontSize: 20, fontSize: 20,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
), ),
),
const SizedBox(height: 20),
],
),
], ],
)); ));
} }

View File

@@ -3,14 +3,16 @@ import 'package:flutter/material.dart';
import 'package:mzansi_innovation_hub/main.dart'; import 'package:mzansi_innovation_hub/main.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_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_single_child_scroll.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_layout/mih_single_child_scroll.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_package_tool_body.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_tool_body.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_package_alert.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_circle_avatar.dart';
import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_image_display.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_package_components/mih_image_display.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';
@@ -42,15 +44,11 @@ class _MihMyBusinessUserState extends State<MihMyBusinessUser> {
final lnameController = TextEditingController(); final lnameController = TextEditingController();
final accessController = TextEditingController(); final accessController = TextEditingController();
final signtureController = TextEditingController(); final signtureController = TextEditingController();
final _formKey = GlobalKey<FormState>();
late String env; late String env;
bool isFormFilled() { bool isFormFilled() {
if (signtureController.text.isEmpty || if (titleDropdownController.text.isEmpty) {
titleDropdownController.text.isEmpty ||
titleTextController.text.isEmpty ||
fnameController.text.isEmpty ||
lnameController.text.isEmpty ||
accessController.text.isEmpty) {
return false; return false;
} else { } else {
return true; return true;
@@ -216,24 +214,35 @@ class _MihMyBusinessUserState extends State<MihMyBusinessUser> {
return MihSingleChildScroll( return MihSingleChildScroll(
child: Column( child: Column(
children: [ children: [
MihCircleAvatar( MihForm(
formKey: _formKey,
formFields: [
Center(
child: MihCircleAvatar(
imageFile: widget.userProPicImage, imageFile: widget.userProPicImage,
width: 150, width: 150,
editable: false, editable: false,
fileNameController: fileNameController, fileNameController: fileNameController,
userSelectedfile: userPicFile, userSelectedfile: userPicFile,
frameColor: MzanziInnovationHub.of(context)!.theme.secondaryColor(), frameColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
backgroundColor: backgroundColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(), MzanziInnovationHub.of(context)!.theme.primaryColor(),
onChange: (_) {}, onChange: (_) {},
), ),
),
Visibility( Visibility(
visible: false, visible: false,
child: MIHTextField( child: MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: fileNameController, controller: fileNameController,
multiLineInput: false,
requiredText: true,
readOnly: true,
hintText: "Selected File Name", hintText: "Selected File Name",
editable: false,
required: false,
), ),
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
@@ -246,32 +255,63 @@ class _MihMyBusinessUserState extends State<MihMyBusinessUser> {
enableSearch: false, enableSearch: false,
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
MIHTextField( MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: titleTextController, controller: titleTextController,
multiLineInput: false,
requiredText: true,
hintText: "Other Title", hintText: "Other Title",
editable: true, validator: (value) {
required: true, return MihValidationServices().isEmpty(value);
},
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
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, readOnly: true,
hintText: "First Name",
validator: (value) {
return MihValidationServices().isEmpty(value);
},
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
MIHTextField( MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: lnameController, controller: lnameController,
multiLineInput: false,
requiredText: true,
readOnly: true,
hintText: "Surname", hintText: "Surname",
editable: false, validator: (value) {
required: true, return MihValidationServices().isEmpty(value);
},
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
MIHTextField( MihTextFormField(
fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: accessController, controller: accessController,
multiLineInput: false,
requiredText: true,
hintText: "Access Level", hintText: "Access Level",
editable: false, readOnly: true,
required: true, validator: (value) {
return MihValidationServices().isEmpty(value);
},
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
Container( Container(
@@ -285,7 +325,8 @@ class _MihMyBusinessUserState extends State<MihMyBusinessUser> {
), ),
), ),
), ),
MihImageDisplay( Center(
child: MihImageDisplay(
imageFile: widget.userSignatureImage, imageFile: widget.userSignatureImage,
width: 300, width: 300,
height: 200, height: 200,
@@ -298,20 +339,29 @@ class _MihMyBusinessUserState extends State<MihMyBusinessUser> {
}); });
}, },
), ),
),
const SizedBox(height: 10), const SizedBox(height: 10),
Visibility( Visibility(
visible: false, visible: false,
child: MIHTextField( child: MihTextFormField(
controller: signtureController, fillColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(),
inputColor:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
controller: fileNameController,
multiLineInput: false,
requiredText: true,
readOnly: true,
hintText: "Selected Signature File", hintText: "Selected Signature File",
editable: false,
required: true,
), ),
), ),
const SizedBox(height: 15), const SizedBox(height: 15),
MihButton( Center(
child: MihButton(
onPressed: () { onPressed: () {
if (_formKey.currentState!.validate()) {
submitForm(); submitForm();
}
}, },
buttonColor: buttonColor:
MzanziInnovationHub.of(context)!.theme.secondaryColor(), MzanziInnovationHub.of(context)!.theme.secondaryColor(),
@@ -319,12 +369,17 @@ class _MihMyBusinessUserState extends State<MihMyBusinessUser> {
child: Text( child: Text(
"Update", "Update",
style: TextStyle( style: TextStyle(
color: MzanziInnovationHub.of(context)!.theme.primaryColor(), color:
MzanziInnovationHub.of(context)!.theme.primaryColor(),
fontSize: 20, fontSize: 20,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
), ),
),
const SizedBox(height: 20),
],
),
], ],
), ),
); );