unzip static method

Map<String, dynamic> unzip(
  1. Uint8List data
)

Implementation

static Map<String,dynamic> unzip(Uint8List data) {
  final Map<String,dynamic> files = {};
  int e = data.length - 22;
  for (; b4(data, e) != 0x6054B50; --e) {
    if (e == 0 || data.length - e > 65558){
      throw 'invalid zip file';
    }
  }

  int c = b2(data, e + 8);
  if (c == 0){
    return {};
  }
  int o = b4(data, e + 16);
  bool z = o == 4294967295;
  if (z) {
    e = b4(data, e - 12);
    if (b4(data, e) != 0x6064B50){
      throw 'invalid zip file';
    }
    c = b4(data, e + 32);
    o = b4(data, e + 48);
  }
  for (int i = 0; i < c; ++i) {
    final _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
    o = no;
    if (c_2 == 0){
      files[fn] = slc(data, b, b + sc);
    }
    else if (c_2 == 8){
      files[fn] = inflt(data.sublist(b, b + sc), Uint8List(su));
    }
    else{
      throw 'unknown compression type $c_2';
    }
  }
  return files;
}