addFile method
Implementation
void addFile(String name, List<int> content) {
final nameBytes = utf8.encode(name);
final crc = _getCrc32(content);
final len = content.length;
final time = _dosDate(DateTime.now());
// Local File Header
_out.add([80, 75, 3, 4]); // PK\3\4
_out.add(_le16(20)); // version
_out.add(_le16(1 << 11)); // flags (UTF-8)
_out.add(_le16(0)); // compression (0 = store)
_out.add(_le32(time));
_out.add(_le32(crc));
_out.add(_le32(len));
_out.add(_le32(len));
_out.add(_le16(nameBytes.length));
_out.add(_le16(0)); // extra
_out.add(nameBytes);
_out.add(content);
// Central Directory
_cd.add([80, 75, 1, 2]); // PK\1\2
_cd.add(_le16(20)); // version made by
_cd.add(_le16(20)); // version needed
_cd.add(_le16(1 << 11)); // flags
_cd.add(_le16(0)); // compression
_cd.add(_le32(time));
_cd.add(_le32(crc));
_cd.add(_le32(len));
_cd.add(_le32(len));
_cd.add(_le16(nameBytes.length));
_cd.add(_le16(0)); // extra
_cd.add(_le16(0)); // comment
_cd.add(_le16(0)); // disk
_cd.add(_le16(0)); // attr
_cd.add(_le32(0)); // ext attr
_cd.add(_le32(_offset));
_cd.add(nameBytes);
_offset += 30 + nameBytes.length + len;
_count++;
}