addTag method
Implementation
void addTag(bool duplicate, String tag, BuildContext context) {
if (tag.isEmpty) return;
String processedTag = _processTag(tag);
if (processedTag.isEmpty) return;
// Check for duplicates
if (!duplicate && _isDuplicate(processedTag)) {
if (!widget.allowDuplicates) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Duplicate tags are not allowed')),
);
return;
}
// If duplicates are allowed, proceed without further checks
}
// Check max tags limit
if (widget.maxTags != null && _tags.length >= widget.maxTags!) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Maximum tag limit reached')),
);
return;
}
// Validate tag
if (widget.tagValidator != null) {
final validationError = widget.tagValidator!(processedTag);
if (validationError != null) {
ScaffoldMessenger.of(
context,
).showSnackBar(SnackBar(content: Text(validationError)));
return;
}
}
_tags.add(processedTag);
notifyListeners();
widget.onTagAdded?.call(processedTag);
widget.onTagsChanged?.call(_tags);
}