setFromURL method

Future<bool> setFromURL(
  1. BuildContext context, {
  2. required String url,
  3. Map<String, String>? headers,
  4. int? maxSize,
  5. dynamic onAdd()?,
})

Implementation

Future<bool> setFromURL(final BuildContext context, {
  required final String url,
  final Map<String, String>? headers,
  final int     ? maxSize,
  final Function()? onAdd
}) async {
  // Validate URL format
  if (!_urlPattern.hasMatch(url)) {
    reset(error: true);
    return false;
  } else {
    _extension = url.split('/').last.split('.').last;
    if(!_fileTypes.contains(_extension)){
      reset(error: true);
      return false;
    }
  }

  return HttpService.downloadImage(headers: headers, url: url).then((bytes) async {
    if(bytes != null) {
      return await setFromBytes(
        name      : _className,
        bytes     : bytes,
        extension : url.split('/').last.split('.').last,
        maxSize   : maxSize,
        onAdd     : onAdd
      ).then((_) => true);
    } else {
      reset(error: true);
      return false;
    }
  }).onError((error, stackTrace){
      reset(error: true);
      return false;
  });
}