dio_range_download 1.0.1 copy "dio_range_download: ^1.0.1" to clipboard
dio_range_download: ^1.0.1 copied to clipboard

A download tool library that supports resumable downloading and segmented downloading.

dio_range_download #

A download tool library that supports resumable downloading and segmented downloading. https://pub.dev/packages/dio_range_download

Theory #

This library is based on the range protocol header of the http1.1 version to achieve segmented download and resumable download.

headers: {"range": "bytes=$start-$end"},

Demo #

import 'package:dio/dio.dart';
import 'package:dio_range_download/dio_range_download.dart';

main() async {
  print("hello world");
  rangeDownload();
}

DateTime startTime;
rangeDownload() async {
  print("start");
  bool isStarted = false;
  var url =
      "http://music.163.com/song/media/outer/url?id=1357233444.mp3";
  var savePath = "download_result/music.mp3";
  // CancelToken cancelToken = CancelToken();
  Response res = await RangeDownload.downloadWithChunks(url, savePath,
      //isRangeDownload: false,//Support normal download
      // maxChunk: 6,
      // dio: Dio(),//Optional parameters "dio".Convenient to customize request settings.
      // cancelToken: cancelToken,
      onReceiveProgress: (received, total) {
    if (!isStarted) {
      startTime = DateTime.now();
      isStarted = true;
    }
    if (total != -1) {
      print("${(received / total * 100).floor()}%");
      // if (received / total * 100.floor() > 50) {
      //   cancelToken.cancel();
      // }
    }
    if ((received / total * 100).floor() >= 100) {
      var duration = (DateTime.now().millisecondsSinceEpoch -
              startTime.millisecondsSinceEpoch) /
          1000;
      print(duration.toString() + "s");
      print(
          (duration ~/ 60).toString() + "m" + (duration % 60).toString() + "s");
    }
  });
  print(res.statusCode);
  print(res.statusMessage);
  print(res.data);
}

11
likes
40
pub points
34%
popularity

Publisher

unverified uploader

A download tool library that supports resumable downloading and segmented downloading.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (LICENSE)

Dependencies

dio

More

Packages that depend on dio_range_download