fetch_pool

Last updated:

0 purchases

fetch_pool Image
fetch_pool Images
Add to Cart

Description:

fetch pool

FetchPool #
A library to easily and asynchronously download a list of URLs in parallel, using a given
maximum number of concurrent connections. This lets you download a list of hundreds of files,
while only ever downloading a few at the same time.


Usage #
A simple usage example:
import 'package:fetch_pool/fetch_pool.dart';

main() {
const urls = [
"https://picsum.photos/id/0/5616/3744",
"https://picsum.photos/id/1/5616/3744",
"https://some.invalid.url/to/simulate/an/error", // intentional
"https://picsum.photos/id/1001/5616/3744",
"https://picsum.photos/id/1002/4312/2868",
"https://picsum.photos/id/1003/1181/1772",
"https://picsum.photos/id/1004/5616/3744",
"https://picsum.photos/id/1005/5760/3840",
];

final pool = FetchPool(maxConcurrent: 2, urls: urls, destinationDirectory: "./deep/path/to/images");
final results = await pool.fetch(progressCallback: (progress) {
print('Total progress: $progress');
});

results.forEach((url, result) {
if (result.isSuccess) {
print('SUCCESS: ${url} > ${result.localPath}');
} else {
print('FAILURE: ${url} > ${result.error}');
}
});
}
copied to clipboard
The above code will try to download the list of URLs to the given destinationDirectory. It will use a
maximum of two concurrent connections and report on the total progress using the given progressCallback.
By default, the downloaded files will be named using the FetchPoolFileNamingStrategy.basename strategy.
That means that a URL like https://test.com/img.png?a=123&b=456 will result in a local filename of img.png.
Using basenameWithQueryParams would result in img_a_123_b_456.png.
Using base64EncodedUrl base64 encodes the whole URL and would result in a local filename of aHR0cHM6Ly90ZXN0LmNvbS9pbWcucG5nP2E9MTIzJmI9NDU2.
By default, the FetchPoolFileOverwritingStrategy.overwrite strategy is used. That means that any existing files of the same name in the destinationDirectory will be overwritten. Using the FetchPoolFileOverwritingStrategy.skip strategy will skip existing files and not even attempt to download them. The FetchPoolResult object for each requested URL has a persistenceResult property that indicates if/how the file was persisted (saved, overwritten, or skipped).
Credits #
FetchPool is a project by TSG, a full-service digital agency taking software from concept to launch.
Our powerhouse team of designers and engineers build iOS, Android, and web apps across many industries.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.