resolveTextAvatarInitials function

String resolveTextAvatarInitials(
  1. String text, {
  2. InitialsMode mode = InitialsMode.words,
  3. int maxInitials = 2,
  4. String initialsBuilder(
    1. String name
    )?,
})

Implementation

String resolveTextAvatarInitials(
  String text, {
  InitialsMode mode = InitialsMode.words,
  int maxInitials = 2,
  String Function(String name)? initialsBuilder,
}) {
  final trimmed = text.validate().trim();
  if (trimmed.isEmptyOrNull) return '';

  switch (mode) {
    case InitialsMode.custom:
      return initialsBuilder?.call(trimmed) ?? '';
    case InitialsMode.firstOne:
      return _firstAlphabet(trimmed);
    case InitialsMode.firstTwo:
      final buffer = StringBuffer();
      for (var i = 0; i < trimmed.length && buffer.length < 2; i++) {
        if (trimmed[i].isAlphabetOnly()) buffer.write(trimmed[i]);
      }
      return buffer.toString();
    case InitialsMode.words:
      final parts = trimmed.split(RegExp(r'\s+'));
      final buffer = StringBuffer();
      for (final part in parts) {
        if (buffer.length >= maxInitials) break;
        final letter = _firstAlphabet(part);
        if (letter.isNotEmpty) buffer.write(letter);
      }
      return buffer.toString();
  }
}