separated method Null safety

String separated(
  1. String separator
)

Implementation

String separated(String separator) {
  final _this = this;
  String out = '';
  if (_this != null && _this.isNotEmpty) {
    final c = (separator.length == 1) ? '\\${separator[0]}' : '';
    String s = _this.trim().replaceAll(RegExp('[\\s$c]+'), separator);
    for (int i = 0; i < s.length; i++) {
      if (s[i].isUpperCase) {
        if (i != 0 && s[i - 1].isLetterOrDigit) {
          if (s[i - 1].isUpperCase) {
            if (i < s.length - 1 &&
                s[i + 1].isLetter &&
                !s[i + 1].isUpperCase) {
              out += separator;
            }
          } else {
            out += separator;
          }
        }
        out += s[i].toLowerCase();
      } else {
        out += s[i];
      }
    }
  }
  return out;
}