headerContentTypeCharset property
String?
headerContentTypeCharset
Returns the header Content-Type
charset.
Implementation
String? get headerContentTypeCharset {
var contentType = headerContentType;
if (contentType == null) return null;
var idx = contentType.indexOf(';');
if (idx < 0) return null;
var rest = contentType.substring(idx + 1);
var parts = rest.split(';').map((e) => e.trim().split('='));
if (parts.isEmpty) return null;
var charsetPair =
parts.firstWhereOrNull((e) => equalsIgnoreAsciiCase(e[0], 'charset'));
if (charsetPair == null) return null;
var charset = charsetPair[1].trim();
return charset;
}
Implementation
set headerContentTypeCharset(String? charset) {
charset = _normalizeCharset(charset);
var contentType = headerContentType;
if (contentType == null) {
if (charset != null) {
headerContentType = 'text/plain; charset=$charset';
}
return;
}
var parts = contentType
.split(';')
.map((e) => e.trim())
.where((e) => e.isNotEmpty)
.toList();
var charsetEntry = charset != null ? 'charset=$charset' : null;
if (parts.length == 1) {
if (charsetEntry != null) {
parts.add(charsetEntry);
}
} else {
var idx = parts.indexWhere((e) => e.startsWith('charset='));
if (charsetEntry != null) {
if (idx >= 0) {
parts[idx] = charsetEntry;
} else {
parts.insert(1, charsetEntry);
}
} else if (idx >= 0) {
parts.removeAt(idx);
}
}
headerContentType = parts.join('; ');
}