rules 2.2.0+1
rules: ^2.2.0+1 copied to clipboard
Rules is a simple yet powerful and feature-rich validation library for both dart and flutter.
/// Usage examples:
///
/// For more examples refer to https://github.com/ganeshrvel/pub-rules/blob/master/README.md
import 'package:rules/rules.dart';
import 'package:rules/src/helpers/logging.dart';
void rule() {
const textFieldValue = 'abc@xyz';
final rule = Rule(
textFieldValue,
name: 'Text field',
isRequired: true,
isEmail: true,
);
log(rule.error);
// output: 'Text field is not a valid email address'
log(rule.hasError);
// output: true
if (rule.hasError) {
// some action on error
} else {
// Some action on success
}
}
void groupRule() {
const textFieldValue1 = '';
const textFieldValue2 = '';
final rule1 = Rule(
textFieldValue1,
name: 'Text field 1',
isRequired: true,
);
final rule2 = Rule(
textFieldValue2,
name: 'Text field 2',
isEmail: true,
);
final groupRule = GroupRule(
[rule1, rule2], // value; List of Rule
name:
'Group name', // placeholder value which will be used while displaying errors
);
log(groupRule.error);
// output: 'Text field 1 is required'
log(groupRule.hasError);
// output: true
}
void combinedRule() {
const textFieldValue1 = '';
const textFieldValue2 = 'abc@xyz.com';
final rule1 = Rule(
textFieldValue1,
name: 'Text field 1',
); // Validation OK
final rule2 = Rule(
textFieldValue2,
name: 'Text field 2',
isEmail: true,
); // Validation OK
final groupRule = GroupRule(
[rule1, rule2],
name: 'Group name',
requiredAll: true,
); // Validation FAILED
const textFieldValue3 = '';
final rule3 = Rule(
textFieldValue3,
name: 'Text field 3',
isRequired: true,
); // Validation FAILED
final combinedRule = CombinedRule(
rules: [rule3],
groupRules: [groupRule],
);
log(combinedRule.errorList);
// output: ['Text field 3 is required', 'All fields are mandatory in Group name']
log(combinedRule.hasError);
// output: true
if (combinedRule.hasError) {
// some action on error
} else {
// Some action on success
}
}
void shouldPassOrCustomErrorExample() {
const fileName = 'my<file>.txt';
final rule = Rule(
fileName,
name: 'File name',
isRequired: true,
shouldPassOrCustomError: (value) {
final invalidChars =
value.split('').where((c) => '<>:"/\\|?*'.contains(c)).toList();
if (invalidChars.isEmpty) {
return null;
}
return 'File name contains unsupported characters: ${invalidChars.join(', ')}';
},
customErrors: {
'isRequired': 'A file name is required',
},
);
log(rule.error);
// output: 'File name contains unsupported characters: <, >'
log(rule.hasError);
// output: true
}