// GENERATED CODE - DO NOT MODIFY BY HAND // ************************************************************************** // StackedFormGenerator // ************************************************************************** // ignore_for_file: public_member_api_docs, constant_identifier_names, non_constant_identifier_names,unnecessary_this import 'package:flutter/material.dart'; import 'package:stacked/stacked.dart'; import 'package:yimaru_app/ui/common/validators/form_validator.dart'; const bool _autoTextFieldValidation = true; const String OtpValueKey = 'otp'; const String EmailValueKey = 'email'; const String PasswordValueKey = 'password'; const String PhoneNumberValueKey = 'phoneNumber'; const String ConfirmPasswordValueKey = 'confirmPassword'; final Map _RegisterViewTextEditingControllers = {}; final Map _RegisterViewFocusNodes = {}; final Map _RegisterViewTextValidations = { OtpValueKey: FormValidator.validateForm, EmailValueKey: FormValidator.validateEmail, PasswordValueKey: FormValidator.validateForm, PhoneNumberValueKey: FormValidator.validateForm, ConfirmPasswordValueKey: FormValidator.validateForm, }; mixin $RegisterView { TextEditingController get otpController => _getFormTextEditingController(OtpValueKey); TextEditingController get emailController => _getFormTextEditingController(EmailValueKey); TextEditingController get passwordController => _getFormTextEditingController(PasswordValueKey); TextEditingController get phoneNumberController => _getFormTextEditingController(PhoneNumberValueKey); TextEditingController get confirmPasswordController => _getFormTextEditingController(ConfirmPasswordValueKey); FocusNode get otpFocusNode => _getFormFocusNode(OtpValueKey); FocusNode get emailFocusNode => _getFormFocusNode(EmailValueKey); FocusNode get passwordFocusNode => _getFormFocusNode(PasswordValueKey); FocusNode get phoneNumberFocusNode => _getFormFocusNode(PhoneNumberValueKey); FocusNode get confirmPasswordFocusNode => _getFormFocusNode(ConfirmPasswordValueKey); TextEditingController _getFormTextEditingController( String key, { String? initialValue, }) { if (_RegisterViewTextEditingControllers.containsKey(key)) { return _RegisterViewTextEditingControllers[key]!; } _RegisterViewTextEditingControllers[key] = TextEditingController(text: initialValue); return _RegisterViewTextEditingControllers[key]!; } FocusNode _getFormFocusNode(String key) { if (_RegisterViewFocusNodes.containsKey(key)) { return _RegisterViewFocusNodes[key]!; } _RegisterViewFocusNodes[key] = FocusNode(); return _RegisterViewFocusNodes[key]!; } /// Registers a listener on every generated controller that calls [model.setData()] /// with the latest textController values void syncFormWithViewModel(FormStateHelper model) { otpController.addListener(() => _updateFormData(model)); emailController.addListener(() => _updateFormData(model)); passwordController.addListener(() => _updateFormData(model)); phoneNumberController.addListener(() => _updateFormData(model)); confirmPasswordController.addListener(() => _updateFormData(model)); _updateFormData(model, forceValidate: _autoTextFieldValidation); } /// Registers a listener on every generated controller that calls [model.setData()] /// with the latest textController values @Deprecated( 'Use syncFormWithViewModel instead.' 'This feature was deprecated after 3.1.0.', ) void listenToFormUpdated(FormViewModel model) { otpController.addListener(() => _updateFormData(model)); emailController.addListener(() => _updateFormData(model)); passwordController.addListener(() => _updateFormData(model)); phoneNumberController.addListener(() => _updateFormData(model)); confirmPasswordController.addListener(() => _updateFormData(model)); _updateFormData(model, forceValidate: _autoTextFieldValidation); } /// Updates the formData on the FormViewModel void _updateFormData(FormStateHelper model, {bool forceValidate = false}) { model.setData( model.formValueMap ..addAll({ OtpValueKey: otpController.text, EmailValueKey: emailController.text, PasswordValueKey: passwordController.text, PhoneNumberValueKey: phoneNumberController.text, ConfirmPasswordValueKey: confirmPasswordController.text, }), ); if (_autoTextFieldValidation || forceValidate) { updateValidationData(model); } } bool validateFormFields(FormViewModel model) { _updateFormData(model, forceValidate: true); return model.isFormValid; } /// Calls dispose on all the generated controllers and focus nodes void disposeForm() { // The dispose function for a TextEditingController sets all listeners to null for (var controller in _RegisterViewTextEditingControllers.values) { controller.dispose(); } for (var focusNode in _RegisterViewFocusNodes.values) { focusNode.dispose(); } _RegisterViewTextEditingControllers.clear(); _RegisterViewFocusNodes.clear(); } } extension ValueProperties on FormStateHelper { bool get hasAnyValidationMessage => this .fieldsValidationMessages .values .any((validation) => validation != null); bool get isFormValid { if (!_autoTextFieldValidation) this.validateForm(); return !hasAnyValidationMessage; } String? get otpValue => this.formValueMap[OtpValueKey] as String?; String? get emailValue => this.formValueMap[EmailValueKey] as String?; String? get passwordValue => this.formValueMap[PasswordValueKey] as String?; String? get phoneNumberValue => this.formValueMap[PhoneNumberValueKey] as String?; String? get confirmPasswordValue => this.formValueMap[ConfirmPasswordValueKey] as String?; set otpValue(String? value) { this.setData( this.formValueMap..addAll({OtpValueKey: value}), ); if (_RegisterViewTextEditingControllers.containsKey(OtpValueKey)) { _RegisterViewTextEditingControllers[OtpValueKey]?.text = value ?? ''; } } set emailValue(String? value) { this.setData( this.formValueMap..addAll({EmailValueKey: value}), ); if (_RegisterViewTextEditingControllers.containsKey(EmailValueKey)) { _RegisterViewTextEditingControllers[EmailValueKey]?.text = value ?? ''; } } set passwordValue(String? value) { this.setData( this.formValueMap..addAll({PasswordValueKey: value}), ); if (_RegisterViewTextEditingControllers.containsKey(PasswordValueKey)) { _RegisterViewTextEditingControllers[PasswordValueKey]?.text = value ?? ''; } } set phoneNumberValue(String? value) { this.setData( this.formValueMap..addAll({PhoneNumberValueKey: value}), ); if (_RegisterViewTextEditingControllers.containsKey(PhoneNumberValueKey)) { _RegisterViewTextEditingControllers[PhoneNumberValueKey]?.text = value ?? ''; } } set confirmPasswordValue(String? value) { this.setData( this.formValueMap..addAll({ConfirmPasswordValueKey: value}), ); if (_RegisterViewTextEditingControllers.containsKey( ConfirmPasswordValueKey)) { _RegisterViewTextEditingControllers[ConfirmPasswordValueKey]?.text = value ?? ''; } } bool get hasOtp => this.formValueMap.containsKey(OtpValueKey) && (otpValue?.isNotEmpty ?? false); bool get hasEmail => this.formValueMap.containsKey(EmailValueKey) && (emailValue?.isNotEmpty ?? false); bool get hasPassword => this.formValueMap.containsKey(PasswordValueKey) && (passwordValue?.isNotEmpty ?? false); bool get hasPhoneNumber => this.formValueMap.containsKey(PhoneNumberValueKey) && (phoneNumberValue?.isNotEmpty ?? false); bool get hasConfirmPassword => this.formValueMap.containsKey(ConfirmPasswordValueKey) && (confirmPasswordValue?.isNotEmpty ?? false); bool get hasOtpValidationMessage => this.fieldsValidationMessages[OtpValueKey]?.isNotEmpty ?? false; bool get hasEmailValidationMessage => this.fieldsValidationMessages[EmailValueKey]?.isNotEmpty ?? false; bool get hasPasswordValidationMessage => this.fieldsValidationMessages[PasswordValueKey]?.isNotEmpty ?? false; bool get hasPhoneNumberValidationMessage => this.fieldsValidationMessages[PhoneNumberValueKey]?.isNotEmpty ?? false; bool get hasConfirmPasswordValidationMessage => this.fieldsValidationMessages[ConfirmPasswordValueKey]?.isNotEmpty ?? false; String? get otpValidationMessage => this.fieldsValidationMessages[OtpValueKey]; String? get emailValidationMessage => this.fieldsValidationMessages[EmailValueKey]; String? get passwordValidationMessage => this.fieldsValidationMessages[PasswordValueKey]; String? get phoneNumberValidationMessage => this.fieldsValidationMessages[PhoneNumberValueKey]; String? get confirmPasswordValidationMessage => this.fieldsValidationMessages[ConfirmPasswordValueKey]; } extension Methods on FormStateHelper { setOtpValidationMessage(String? validationMessage) => this.fieldsValidationMessages[OtpValueKey] = validationMessage; setEmailValidationMessage(String? validationMessage) => this.fieldsValidationMessages[EmailValueKey] = validationMessage; setPasswordValidationMessage(String? validationMessage) => this.fieldsValidationMessages[PasswordValueKey] = validationMessage; setPhoneNumberValidationMessage(String? validationMessage) => this.fieldsValidationMessages[PhoneNumberValueKey] = validationMessage; setConfirmPasswordValidationMessage(String? validationMessage) => this.fieldsValidationMessages[ConfirmPasswordValueKey] = validationMessage; /// Clears text input fields on the Form void clearForm() { otpValue = ''; emailValue = ''; passwordValue = ''; phoneNumberValue = ''; confirmPasswordValue = ''; } /// Validates text input fields on the Form void validateForm() { this.setValidationMessages({ OtpValueKey: getValidationMessage(OtpValueKey), EmailValueKey: getValidationMessage(EmailValueKey), PasswordValueKey: getValidationMessage(PasswordValueKey), PhoneNumberValueKey: getValidationMessage(PhoneNumberValueKey), ConfirmPasswordValueKey: getValidationMessage(ConfirmPasswordValueKey), }); } } /// Returns the validation message for the given key String? getValidationMessage(String key) { final validatorForKey = _RegisterViewTextValidations[key]; if (validatorForKey == null) return null; String? validationMessageForKey = validatorForKey( _RegisterViewTextEditingControllers[key]!.text, ); return validationMessageForKey; } /// Updates the fieldsValidationMessages on the FormViewModel void updateValidationData(FormStateHelper model) => model.setValidationMessages({ OtpValueKey: getValidationMessage(OtpValueKey), EmailValueKey: getValidationMessage(EmailValueKey), PasswordValueKey: getValidationMessage(PasswordValueKey), PhoneNumberValueKey: getValidationMessage(PhoneNumberValueKey), ConfirmPasswordValueKey: getValidationMessage(ConfirmPasswordValueKey), });