Merge pull request #14 from FRE-Informatica/fd-601
FD-601/FIX: Agendamento Provisório
This commit is contained in:
commit
bd24d756a7
|
@ -51,8 +51,8 @@
|
||||||
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||||
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
6436409727A31CDC00820AF7 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
6436409227A31CDD00820AF7 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
6436409027A31CD400820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
6436409B27A31CD600820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||||
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
C1B4A503715BC7B0F8826983 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
C1B4A503715BC7B0F8826983 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
@ -301,8 +301,8 @@
|
||||||
6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
|
6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
|
||||||
isa = PBXVariantGroup;
|
isa = PBXVariantGroup;
|
||||||
children = (
|
children = (
|
||||||
6436409727A31CDC00820AF7 /* pt */,
|
6436409227A31CDD00820AF7 /* pt */,
|
||||||
6436409027A31CD400820AF7 /* en */,
|
6436409B27A31CD600820AF7 /* en */,
|
||||||
);
|
);
|
||||||
name = InfoPlist.strings;
|
name = InfoPlist.strings;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
|
|
@ -3,6 +3,7 @@ import 'dart:convert';
|
||||||
import 'dart:developer';
|
import 'dart:developer';
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
|
import 'package:hub/shared/utils/validator_util.dart';
|
||||||
|
|
||||||
import '/flutter_flow/flutter_flow_util.dart';
|
import '/flutter_flow/flutter_flow_util.dart';
|
||||||
import 'api_manager.dart';
|
import 'api_manager.dart';
|
||||||
|
@ -1271,7 +1272,7 @@ class PostProvVisitSchedulingCall {
|
||||||
'userUUID': userUUID,
|
'userUUID': userUUID,
|
||||||
'cliID': cliID,
|
'cliID': cliID,
|
||||||
'atividade': atividade,
|
'atividade': atividade,
|
||||||
'data': data,
|
'data': ValidatorUtil.toISO8601("dd/MM/yyyy HH:mm:ss", data!),
|
||||||
'motivo': motivo,
|
'motivo': motivo,
|
||||||
'nome': nome,
|
'nome': nome,
|
||||||
'proID': proID,
|
'proID': proID,
|
||||||
|
|
|
@ -15,8 +15,8 @@ import 'package:hub/app_state.dart';
|
||||||
import 'package:hub/backend/api_requests/api_calls.dart';
|
import 'package:hub/backend/api_requests/api_calls.dart';
|
||||||
import 'package:hub/backend/api_requests/api_manager.dart';
|
import 'package:hub/backend/api_requests/api_manager.dart';
|
||||||
import 'package:hub/components/templates_components/access_notification_modal_template_component/access_notification_modal_template_component_widget.dart';
|
import 'package:hub/components/templates_components/access_notification_modal_template_component/access_notification_modal_template_component_widget.dart';
|
||||||
|
import 'package:hub/components/templates_components/details_component/details_component_widget.dart';
|
||||||
import 'package:hub/components/templates_components/message_notificaion_modal_template_component/message_notification_widget.dart';
|
import 'package:hub/components/templates_components/message_notificaion_modal_template_component/message_notification_widget.dart';
|
||||||
import 'package:hub/components/templates_components/visit_request_template_component/visit_request_template_component_widget.dart';
|
|
||||||
import 'package:rxdart/rxdart.dart';
|
import 'package:rxdart/rxdart.dart';
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -416,7 +416,7 @@ class NotificationHandler {
|
||||||
_getIdBasedOnUserType(message);
|
_getIdBasedOnUserType(message);
|
||||||
return Dialog(
|
return Dialog(
|
||||||
backgroundColor: Colors.transparent,
|
backgroundColor: Colors.transparent,
|
||||||
child: VisitRequestTemplateComponentWidget(
|
child: DetailsComponentWidget(
|
||||||
vteName: message['mensagem'] ?? 'Unknown',
|
vteName: message['mensagem'] ?? 'Unknown',
|
||||||
vteReason: message['motivo'] ?? 'Unknown',
|
vteReason: message['motivo'] ?? 'Unknown',
|
||||||
vteMsg: message['mensagem'] ?? 'Unknown',
|
vteMsg: message['mensagem'] ?? 'Unknown',
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:hub/components/templates_components/visit_request_template_component/visit_request_template_component_widget.dart';
|
import 'package:hub/components/templates_components/details_component/details_component_widget.dart';
|
||||||
import 'package:hub/flutter_flow/flutter_flow_model.dart';
|
import 'package:hub/flutter_flow/flutter_flow_model.dart';
|
||||||
|
|
||||||
class VisitRequestTemplateComponentModel
|
class DetailsComponentModel extends FlutterFlowModel<DetailsComponentWidget> {
|
||||||
extends FlutterFlowModel<VisitRequestTemplateComponentWidget> {
|
|
||||||
/// State fields for stateful widgets in this component.
|
/// State fields for stateful widgets in this component.
|
||||||
|
|
||||||
// State field(s) for TextField widget.
|
// State field(s) for TextField widget.
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:google_fonts/google_fonts.dart';
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
import 'package:hub/components/templates_components/visit_request_template_component/visit_request_template_component_model.dart';
|
import 'package:hub/components/templates_components/details_component/details_component_model.dart';
|
||||||
import 'package:hub/flutter_flow/flutter_flow_icon_button.dart';
|
import 'package:hub/flutter_flow/flutter_flow_icon_button.dart';
|
||||||
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
|
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
|
||||||
import 'package:hub/flutter_flow/flutter_flow_util.dart';
|
import 'package:hub/flutter_flow/flutter_flow_util.dart';
|
||||||
|
@ -10,8 +10,8 @@ import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class VisitRequestTemplateComponentWidget extends StatefulWidget {
|
class DetailsComponentWidget extends StatefulWidget {
|
||||||
const VisitRequestTemplateComponentWidget({
|
const DetailsComponentWidget({
|
||||||
super.key,
|
super.key,
|
||||||
required this.vteName,
|
required this.vteName,
|
||||||
required this.vteReason,
|
required this.vteReason,
|
||||||
|
@ -52,13 +52,11 @@ class VisitRequestTemplateComponentWidget extends StatefulWidget {
|
||||||
)? changeStatusAction;
|
)? changeStatusAction;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<VisitRequestTemplateComponentWidget> createState() =>
|
State<DetailsComponentWidget> createState() => _DetailsComponentWidgetState();
|
||||||
_VisitRequestTemplateComponentWidgetState();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class _VisitRequestTemplateComponentWidgetState
|
class _DetailsComponentWidgetState extends State<DetailsComponentWidget> {
|
||||||
extends State<VisitRequestTemplateComponentWidget> {
|
late DetailsComponentModel _model;
|
||||||
late VisitRequestTemplateComponentModel _model;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void setState(VoidCallback callback) {
|
void setState(VoidCallback callback) {
|
||||||
|
@ -69,7 +67,7 @@ class _VisitRequestTemplateComponentWidgetState
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_model = createModel(context, () => VisitRequestTemplateComponentModel());
|
_model = createModel(context, () => DetailsComponentModel());
|
||||||
|
|
||||||
_model.textController1 ??= TextEditingController(text: widget.vteName);
|
_model.textController1 ??= TextEditingController(text: widget.vteName);
|
||||||
_model.textFieldFocusNode1 ??= FocusNode();
|
_model.textFieldFocusNode1 ??= FocusNode();
|
|
@ -19,7 +19,7 @@ class ForgotPasswordTemplateComponentModel
|
||||||
BuildContext context, String? val) {
|
BuildContext context, String? val) {
|
||||||
if (val == null || val.isEmpty) {
|
if (val == null || val.isEmpty) {
|
||||||
return FFLocalizations.of(context).getText(
|
return FFLocalizations.of(context).getText(
|
||||||
'3hqg8buh' /* E-mail é Obrigatório */,
|
'snnmkbyc' /* E-mail é Obrigatório */,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -320,46 +320,74 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
|
||||||
},
|
},
|
||||||
// scheduleProvisionalVisitPage
|
// scheduleProvisionalVisitPage
|
||||||
{
|
{
|
||||||
'x7at46ur': {
|
'uj8acuab': {
|
||||||
'pt': 'Quais visitantes você deseja cadastrar?',
|
'pt': 'Preencha os Campos Abaixo:',
|
||||||
'en': 'Which visitors do you want to register?',
|
'en': 'Fill in the fields below:',
|
||||||
},
|
},
|
||||||
'shj19b2o': {
|
'8d3679lf': {
|
||||||
'pt': 'Qual o período de validade da visita?',
|
'pt': 'Propriedade',
|
||||||
'en': 'Visit Validity Period',
|
'en': 'Property',
|
||||||
},
|
},
|
||||||
'8zgsw5so': {
|
'z6aawgqa': {
|
||||||
'pt': 'Ínicio da Visita',
|
'pt': 'Dados da Visita',
|
||||||
'en': 'Start of the Visit',
|
'en': 'Visit Data',
|
||||||
},
|
|
||||||
'p16wm7kp': {
|
|
||||||
'pt': 'Quando a visitas se inicia?',
|
|
||||||
'en': 'When does the visit start?',
|
|
||||||
},
|
|
||||||
'3zfd7uf9': {
|
|
||||||
'pt': 'Qual o nome do visitante?',
|
|
||||||
'en': 'What is the visitor\'s name?',
|
|
||||||
},
|
},
|
||||||
'wehvxbz4': {
|
'wehvxbz4': {
|
||||||
'pt': 'Nome do Visitante',
|
'pt': 'Nome / Apelido do Visitante',
|
||||||
'en': 'Visitor Name',
|
'en': 'Visitor\'s Name / Nickname',
|
||||||
},
|
},
|
||||||
'juh7f24w': {
|
'juh7f24w': {
|
||||||
'pt': 'Escreva o nome do visitante aqui',
|
'pt': '',
|
||||||
'en': 'Write the visitor\'s name here',
|
'en': '',
|
||||||
},
|
},
|
||||||
'jhss056s': {
|
'8zgsw5so': {
|
||||||
'pt': 'Você tem alguma observação sobre está visita?',
|
'pt': 'Data / Hora Limite da Visita',
|
||||||
'en': 'Do you have any observations about this visit?',
|
'en': 'Visit Limit Date / Time',
|
||||||
|
},
|
||||||
|
'p16wm7kp': {
|
||||||
|
'pt': '',
|
||||||
|
'en': '',
|
||||||
},
|
},
|
||||||
'cw8b3tbb': {
|
'cw8b3tbb': {
|
||||||
'pt': 'Observações da Visita',
|
'pt': 'Observação da Visita',
|
||||||
'en': 'Visit Observations',
|
'en': 'Notes Visit',
|
||||||
},
|
},
|
||||||
'k4qkbv1f': {
|
'k4qkbv1f': {
|
||||||
'pt': 'Escreva as suas observações aqui',
|
'pt': '',
|
||||||
'en': 'Write your observations here',
|
'en': 'Write your observations here',
|
||||||
},
|
},
|
||||||
|
'bv5fg9sv': {
|
||||||
|
'pt': 'Enviar',
|
||||||
|
'en': 'Send',
|
||||||
|
},
|
||||||
|
'3hqg8buh': {
|
||||||
|
'pt': 'Nome é Obrigatório',
|
||||||
|
'en': 'Name is Required',
|
||||||
|
},
|
||||||
|
'l0b0zr50': {
|
||||||
|
'pt': 'Máximo 80 caracteres',
|
||||||
|
'en': 'Maximum 80 characters',
|
||||||
|
},
|
||||||
|
'1p76vmkn': {
|
||||||
|
'pt': 'Please choose an option from the dropdown',
|
||||||
|
'en': '',
|
||||||
|
},
|
||||||
|
'uzefkuf9': {
|
||||||
|
'pt': 'Data / Hora é Obrigatório',
|
||||||
|
'en': 'Date / Time is Required',
|
||||||
|
},
|
||||||
|
'sn6pj4tx': {
|
||||||
|
'pt': 'Please choose an option from the dropdown',
|
||||||
|
'en': '',
|
||||||
|
},
|
||||||
|
'j14it3wp': {
|
||||||
|
'pt': 'Field is required',
|
||||||
|
'en': '',
|
||||||
|
},
|
||||||
|
'ypo6pxie': {
|
||||||
|
'pt': 'Please choose an option from the dropdown',
|
||||||
|
'en': '',
|
||||||
|
},
|
||||||
'cifgwfxs': {
|
'cifgwfxs': {
|
||||||
'pt': 'Agendamento Provisório',
|
'pt': 'Agendamento Provisório',
|
||||||
'en': 'Provisional Scheduling',
|
'en': 'Provisional Scheduling',
|
||||||
|
@ -1047,7 +1075,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
|
||||||
'pt': '',
|
'pt': '',
|
||||||
'en': '',
|
'en': '',
|
||||||
},
|
},
|
||||||
'3hqg8buh': {
|
'snnmkbyc': {
|
||||||
'pt': 'E-mail é Obrigatório',
|
'pt': 'E-mail é Obrigatório',
|
||||||
'en': 'E-mail is Required',
|
'en': 'E-mail is Required',
|
||||||
},
|
},
|
||||||
|
@ -1055,7 +1083,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
|
||||||
'pt': 'E-mail Inválido',
|
'pt': 'E-mail Inválido',
|
||||||
'en': 'Invalid E-mail',
|
'en': 'Invalid E-mail',
|
||||||
},
|
},
|
||||||
'1p76vmkn': {
|
'ph22karc': {
|
||||||
'pt': 'Please choose an option from the dropdown',
|
'pt': 'Please choose an option from the dropdown',
|
||||||
'en': '',
|
'en': '',
|
||||||
},
|
},
|
||||||
|
@ -1064,7 +1092,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
|
||||||
'en': 'Send',
|
'en': 'Send',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// visitRequestTemplateComponent
|
// detailsComponent
|
||||||
{
|
{
|
||||||
'ivfw4j04': {
|
'ivfw4j04': {
|
||||||
'pt': 'Nome',
|
'pt': 'Nome',
|
||||||
|
|
|
@ -7,7 +7,7 @@ import 'package:hub/backend/api_requests/api_calls.dart';
|
||||||
import 'package:hub/backend/push_notification/pushNotificationService.dart';
|
import 'package:hub/backend/push_notification/pushNotificationService.dart';
|
||||||
|
|
||||||
import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart';
|
import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart';
|
||||||
import 'package:hub/components/templates_components/visit_request_template_component/visit_request_template_component_widget.dart';
|
import 'package:hub/components/templates_components/details_component/details_component_widget.dart';
|
||||||
import 'package:hub/flutter_flow/custom_functions.dart';
|
import 'package:hub/flutter_flow/custom_functions.dart';
|
||||||
import 'package:hub/flutter_flow/flutter_flow_icon_button.dart';
|
import 'package:hub/flutter_flow/flutter_flow_icon_button.dart';
|
||||||
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
|
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
|
||||||
|
@ -337,7 +337,7 @@ Widget liberationHistoryItemCard(
|
||||||
useSafeArea: true,
|
useSafeArea: true,
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return VisitRequestTemplateComponentWidget(
|
return DetailsComponentWidget(
|
||||||
vteName: liberationHistoryItem['VTE_NOME'],
|
vteName: liberationHistoryItem['VTE_NOME'],
|
||||||
vteReason: liberationHistoryItem['NOT_MOTIVO'],
|
vteReason: liberationHistoryItem['NOT_MOTIVO'],
|
||||||
vawDate: liberationHistoryItem['NOT_STATUS'] == 'S'
|
vawDate: liberationHistoryItem['NOT_STATUS'] == 'S'
|
||||||
|
|
|
@ -5,6 +5,8 @@ import 'package:hub/flutter_flow/flutter_flow_model.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:hub/pages/schedule_provisional_visit_page/schedule_provisional_visit_page_widget.dart';
|
import 'package:hub/pages/schedule_provisional_visit_page/schedule_provisional_visit_page_widget.dart';
|
||||||
|
|
||||||
|
import '../../flutter_flow/internationalization.dart';
|
||||||
|
|
||||||
class ScheduleProvisionalVisitPageModel
|
class ScheduleProvisionalVisitPageModel
|
||||||
extends FlutterFlowModel<ScheduleProvisionalVisitPageWidget> {
|
extends FlutterFlowModel<ScheduleProvisionalVisitPageWidget> {
|
||||||
/// Local state fields for this page.
|
/// Local state fields for this page.
|
||||||
|
@ -30,36 +32,65 @@ class ScheduleProvisionalVisitPageModel
|
||||||
|
|
||||||
/// State fields for stateful widgets in this page.
|
/// State fields for stateful widgets in this page.
|
||||||
|
|
||||||
final unfocusNode = FocusNode();
|
final formKey = GlobalKey<FormState>();
|
||||||
// State field(s) for TextField widget.
|
// State field(s) for personName widget.
|
||||||
FocusNode? textFieldFocusNode1;
|
FocusNode? personNameFocusNode;
|
||||||
TextEditingController? textController1;
|
TextEditingController? personNameTextController;
|
||||||
String? Function(BuildContext, String?)? textController1Validator;
|
String? Function(BuildContext, String?)? personNameTextControllerValidator;
|
||||||
|
String? _personNameTextControllerValidator(
|
||||||
|
BuildContext context, String? val) {
|
||||||
|
if (val == null || val.isEmpty) {
|
||||||
|
return FFLocalizations.of(context).getText(
|
||||||
|
'3hqg8buh' /* Nome é Obrigatório */,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (val.length > 80) {
|
||||||
|
return FFLocalizations.of(context).getText(
|
||||||
|
'l0b0zr50' /* Máximo 80 caracteres */,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// State field(s) for dateTime widget.
|
||||||
|
FocusNode? dateTimeFocusNode;
|
||||||
|
TextEditingController? dateTimeTextController;
|
||||||
|
String? Function(BuildContext, String?)? dateTimeTextControllerValidator;
|
||||||
|
String? _dateTimeTextControllerValidator(BuildContext context, String? val) {
|
||||||
|
if (val == null || val.isEmpty) {
|
||||||
|
return FFLocalizations.of(context).getText(
|
||||||
|
'uzefkuf9' /* Data / Hora é Obrigatório */,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
DateTime? datePicked;
|
DateTime? datePicked;
|
||||||
// State field(s) for TextField widget.
|
// State field(s) for notes widget.
|
||||||
FocusNode? textFieldFocusNode2;
|
FocusNode? notesFocusNode;
|
||||||
TextEditingController? textController2;
|
TextEditingController? notesTextController;
|
||||||
String? Function(BuildContext, String?)? textController2Validator;
|
String? Function(BuildContext, String?)? notesTextControllerValidator;
|
||||||
// State field(s) for TextField widget.
|
// Stores action output result for [Backend Call - API (postProvVisitScheduling)] action in btnSend widget.
|
||||||
FocusNode? textFieldFocusNode3;
|
ApiCallResponse? provVisitSchedule;
|
||||||
TextEditingController? textController3;
|
|
||||||
String? Function(BuildContext, String?)? textController3Validator;
|
|
||||||
// Stores action output result for [Backend Call - API (postProvVisitScheduling)] action in sendContainer widget.
|
|
||||||
ApiCallResponse? provisionalVisitScheduling;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState(BuildContext context) {}
|
void initState(BuildContext context) {
|
||||||
|
personNameTextControllerValidator = _personNameTextControllerValidator;
|
||||||
|
dateTimeTextControllerValidator = _dateTimeTextControllerValidator;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
unfocusNode.dispose();
|
personNameFocusNode?.dispose();
|
||||||
textFieldFocusNode1?.dispose();
|
personNameTextController?.dispose();
|
||||||
textController1?.dispose();
|
|
||||||
|
|
||||||
textFieldFocusNode2?.dispose();
|
dateTimeFocusNode?.dispose();
|
||||||
textController2?.dispose();
|
dateTimeTextController?.dispose();
|
||||||
|
|
||||||
textFieldFocusNode3?.dispose();
|
notesFocusNode?.dispose();
|
||||||
textController3?.dispose();
|
notesTextController?.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,3 +1,5 @@
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
class ValidatorUtil {
|
class ValidatorUtil {
|
||||||
static bool isValidEmail(String email) {
|
static bool isValidEmail(String email) {
|
||||||
if (RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$').hasMatch(email)) {
|
if (RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$').hasMatch(email)) {
|
||||||
|
@ -14,4 +16,11 @@ class ValidatorUtil {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static String toISO8601(String format, String value) {
|
||||||
|
DateFormat dateFormat = DateFormat(format);
|
||||||
|
DateTime dateTime = dateFormat.parse(value);
|
||||||
|
|
||||||
|
return dateTime.toIso8601String();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue