Future _httpGet()

in lib/src/util_io.dart [27:53]


Future<Uint8List?> _httpGet(Uri uri) async {
  assert(uri.isScheme('http') || uri.isScheme('https'));
  var client = HttpClient();
  var request = await client.getUrl(uri);
  var response = await request.close();
  if (response.statusCode != HttpStatus.ok) {
    return null;
  }
  var splitContent = await response.toList();
  var totalLength = 0;
  if (splitContent.length == 1) {
    var part = splitContent[0];
    if (part is Uint8List) {
      return part;
    }
  }
  for (var list in splitContent) {
    totalLength += list.length;
  }
  var result = Uint8List(totalLength);
  var offset = 0;
  for (var contentPart in splitContent as Iterable<Uint8List>) {
    result.setRange(offset, offset + contentPart.length, contentPart);
    offset += contentPart.length;
  }
  return result;
}