Merge branch 'login-validator' into 'master'
Extracted login validation logic from _validateLogin method and moved it to... See merge request profile-image/kedaireka/polinema-adapative-learning/mobile-adaptive-learning!22
This commit is contained in:
commit
f396ad1c07
|
|
@ -115,22 +115,6 @@ class _SigninScreenState extends State<SigninScreen> {
|
|||
CustomSnackBar.show(context, message: message, isError: true);
|
||||
}
|
||||
|
||||
String? _validateLogin(String? value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return 'Login credential cannot be empty';
|
||||
}
|
||||
|
||||
value = value.trim();
|
||||
|
||||
if (value.contains('@')) {
|
||||
return context.read<ValidatorProvider>().emailValidator(value);
|
||||
} else if (RegExp(r'^\d{ 10}$').hasMatch(value)) {
|
||||
return null; // Valid NISN
|
||||
} else {
|
||||
return 'Please enter a valid email or NISN (10 digits)';
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return GestureDetector(
|
||||
|
|
@ -190,20 +174,50 @@ class _SigninScreenState extends State<SigninScreen> {
|
|||
labelText: 'Email or NISN',
|
||||
hintText: 'Enter Email or NISN Number',
|
||||
keyboardType: TextInputType.emailAddress,
|
||||
validator: _validateLogin,
|
||||
validator: (value) {
|
||||
validatorProvider.validateField(
|
||||
'login', value?.trim(), validator: (val) {
|
||||
if (val == null || val.isEmpty) {
|
||||
return 'Login credential cannot be empty';
|
||||
}
|
||||
|
||||
val = val.trim();
|
||||
|
||||
if (val.contains('@')) {
|
||||
return validatorProvider.emailValidator(val);
|
||||
} else if (RegExp(r'^\d{10}$').hasMatch(val)) {
|
||||
return null; // Valid NISN
|
||||
} else {
|
||||
return 'Please enter a valid email or NISN (10 digits)';
|
||||
}
|
||||
});
|
||||
return validatorProvider.getError('login');
|
||||
},
|
||||
onChanged: (value) =>
|
||||
context.read<ValidatorProvider>().validateField(
|
||||
validatorProvider.validateField(
|
||||
'login',
|
||||
value?.trim(),
|
||||
validator: _validateLogin,
|
||||
validator: (val) {
|
||||
if (val == null || val.isEmpty) {
|
||||
return 'Login credential cannot be empty';
|
||||
}
|
||||
|
||||
val = val.trim();
|
||||
|
||||
if (val.contains('@')) {
|
||||
return validatorProvider.emailValidator(val);
|
||||
} else if (RegExp(r'^\d{10}$').hasMatch(val)) {
|
||||
return null; // Valid NISN
|
||||
} else {
|
||||
return 'Please enter a valid email or NISN (10 digits)';
|
||||
}
|
||||
},
|
||||
),
|
||||
onFieldSubmitted: (_) {
|
||||
FocusScope.of(context)
|
||||
.requestFocus(_passwordFocus);
|
||||
},
|
||||
errorText: context
|
||||
.read<ValidatorProvider>()
|
||||
.getError('login'),
|
||||
errorText: validatorProvider.getError('login'),
|
||||
),
|
||||
const SizedBox(height: 14),
|
||||
CustomFieldWidget(
|
||||
|
|
@ -217,7 +231,12 @@ class _SigninScreenState extends State<SigninScreen> {
|
|||
obscureText:
|
||||
validatorProvider.isObscure('password'),
|
||||
keyboardType: TextInputType.visiblePassword,
|
||||
validator: validatorProvider.passwordValidator,
|
||||
validator: (value) {
|
||||
validatorProvider.validateField('password', value,
|
||||
validator:
|
||||
validatorProvider.passwordValidator);
|
||||
return validatorProvider.getError('password');
|
||||
},
|
||||
onChanged: (value) =>
|
||||
validatorProvider.validateField(
|
||||
'password',
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user