addPart method
PartBuilder
addPart({
- ContentDispositionHeader? disposition,
- MimePart? mimePart,
- MediaSubtype? mediaSubtype,
- bool insert = false,
Adds a new part
Specify the optional disposition in case you want to specify
the content-disposition.
Optionally specify the mimePart, if it is already known.
Optionally specify the mediaSubtype, e.g.
MediaSubtype.multipartAlternative.
Optionally set insert to true to prepend and not append the part.
Implementation
PartBuilder addPart({
ContentDispositionHeader? disposition,
MimePart? mimePart,
MediaSubtype? mediaSubtype,
bool insert = false,
}) {
final addAttachmentInfo = mimePart != null &&
mimePart.getHeaderContentDisposition()?.disposition ==
ContentDisposition.attachment;
mimePart ??= MimePart();
final childBuilder = PartBuilder(mimePart);
if (mediaSubtype != null) {
childBuilder.setContentType(mediaSubtype.mediaType);
} else if (mimePart.getHeaderContentType() != null) {
childBuilder.contentType = mimePart.getHeaderContentType();
}
final children = _children ?? <PartBuilder>[];
if (insert) {
_part.insertPart(mimePart);
children.insert(0, childBuilder);
} else {
_part.addPart(mimePart);
children.add(childBuilder);
}
_children = children;
final usedDisposition =
disposition ?? mimePart.getHeaderContentDisposition();
childBuilder.contentDisposition = usedDisposition;
if (mimePart.isTextMediaType()) {
childBuilder.text = mimePart.decodeContentText();
}
if (addAttachmentInfo && usedDisposition != null) {
final info = AttachmentInfo(
null,
mimePart.mediaType,
mimePart.decodeFileName(),
usedDisposition.size,
usedDisposition.disposition,
mimePart.decodeContentBinary(),
childBuilder,
);
_attachments.add(info);
}
return childBuilder;
}