Git Product home page Git Product logo

fluttercommunity / flutter_downloader Goto Github PK

View Code? Open in Web Editor NEW
898.0 24.0 504.0 2.31 MB

Flutter Downloader - A plugin for creating and managing download tasks.

Home Page: https://pub.dev/packages/flutter_downloader

License: BSD 3-Clause "New" or "Revised" License

Ruby 1.59% Objective-C 33.67% Dart 21.19% Swift 0.22% Kotlin 43.33%
flutter flutter-plugin android ios background-worker downloader download-manager hacktoberfest

flutter_downloader's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flutter_downloader's Issues

handle notification on click action

Is it possible to open the particular downloaded file by using path or open my app when the user clicks on the notification on download success?

Any idea about loadXmlMetaData on a null object reference error?

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.PackageItemInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference

            var dir = await getTemporaryDirectory();

            final taskId = await FlutterDownloader.enqueue(
              url: 'https://mydomain.com/static/mobile/m.apk',
              savedDir: '${dir.path}/',
              showNotification: true, // show download progress in status bar (for Android)
              openFileFromNotification: true, // click on notification to open downloaded file (for Android)
            );

"Worker result FAILURE" on Android

Plugin works like a breeze on iOS, but I get an error on Android.

This is what I get from the log:

I/flutter (27342): Download task is enqueued with id(a1fd47bc-d615-41ba-8eb9-65dc173bfafb)
D/SystemJobScheduler(27342): Scheduling work ID a1fd47bc-d615-41ba-8eb9-65dc173bfafb Job ID 19
D/GreedyScheduler(27342): Starting tracking for a1fd47bc-d615-41ba-8eb9-65dc173bfafb
D/SystemJobService(27342): onStartJob for a1fd47bc-d615-41ba-8eb9-65dc173bfafb
D/ConstraintTracker(27342): NetworkStateTracker: initial state = [ Connected=true Validated=true Metered=false NotRoaming=true ]
D/NetworkStateTracker(27342): Registering network callback
D/WorkConstraintsTracker(27342): Constraints met for a1fd47bc-d615-41ba-8eb9-65dc173bfafb
D/GreedyScheduler(27342): Constraints met: Scheduling work ID a1fd47bc-d615-41ba-8eb9-65dc173bfafb
D/WorkConstraintsTracker(27342): Constraints met for a1fd47bc-d615-41ba-8eb9-65dc173bfafb
D/GreedyScheduler(27342): Constraints met: Scheduling work ID a1fd47bc-d615-41ba-8eb9-65dc173bfafb
D/Processor(27342): Processor: processing a1fd47bc-d615-41ba-8eb9-65dc173bfafb
D/Processor(27342): Work a1fd47bc-d615-41ba-8eb9-65dc173bfafb is already enqueued for processing
D/Processor(27342): Work a1fd47bc-d615-41ba-8eb9-65dc173bfafb is already enqueued for processing
D/NetworkStateTracker(27342): Network capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&FOREGROUND LinkUpBandwidth>=1048576Kbps LinkDnBandwidth>=1048576Kbps SignalStrength: -50]
D/WorkerWrapper(27342): Worker result FAILURE for a1fd47bc-d615-41ba-8eb9-65dc173bfafb
D/Processor(27342): Processor a1fd47bc-d615-41ba-8eb9-65dc173bfafb executed; isSuccessful = false, reschedule = false
D/SystemJobService(27342): a1fd47bc-d615-41ba-8eb9-65dc173bfafb executed on JobScheduler
I/zygote64(27342): Do partial code cache collection, code=61KB, data=47KB
I/zygote64(27342): After code cache collection, code=61KB, data=47KB
I/zygote64(27342): Increasing code cache capacity to 256KB

This is my code:

String taskId = await FlutterDownloader.enqueue(url: link, savedDir: path,);

I know nothing about Android Studio or how to debug Android Apps, so I really don't know how where to start to debug this issue.

Thanks

apk can not open in android8.0

my code is

FlutterDownloader.enqueue(
url: http://xxxx.com/xxy.apk,
savedDir: _dir,
fileName: _filename,
showNotification: true,
openFileFromNotification: opend)
.then((taskid) {
FlutterDownloader.open(taskId: taskid);
});

this not work and also not work in showNotification.

in showNotification it give me a open way page.
the image

Valid urls not working

Hi there,

I'm writing a music app and I just integrated this library to download and sync files to the phone. I tried a few URLs but I couldn't get the files to download. The first URL I tried I got this error HTTP status code: 0 \n Download completed with error: unsupported URL:

https://demo.mstream.io/media/media/Darn Coyotes/Darn Coyotes - See You in Hell- I Guess/Darn Coyotes - See You in Hell, I Guess - 01 You're Next if You Don't RTFM.mp3

I tried encoding all the whitespace so I got this URL:

https://demo.mstream.io/media/media/Darn%20Coyotes/Darn%20Coyotes%20-%20See%20You%20in%20Hell-%20I%20Guess/Darn%20Coyotes%20-%20See%20You%20in%20Hell,%20I%20Guess%20-%2001%20You're%20Next%20if%20You%20Don't%20RTFM.mp3

That one got a 404 error. I'm guessing I need to encode all the entities for it to work. That feels a bit strict though. Is there any way to get the plugin to work with the URLs I posted above?

(Android) NullPointerException when task finishes

Device: Emulated Pixel 2 with API 28

W/System.err(15204): java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference
W/System.err(15204): 	at android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:604)
W/System.err(15204): 	at android.support.v4.content.FileProvider.getPathStrategy(FileProvider.java:578)
W/System.err(15204): 	at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:416)
W/System.err(15204): 	at vn.hunghd.flutterdownloader.DownloadWorker.getOpenFileIntent(DownloadWorker.java:272)
W/System.err(15204): 	at vn.hunghd.flutterdownloader.DownloadWorker.downloadFile(DownloadWorker.java:161)
W/System.err(15204): 	at vn.hunghd.flutterdownloader.DownloadWorker.doWork(DownloadWorker.java:84)
W/System.err(15204): 	at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:192)
W/System.err(15204): 	at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:105)
W/System.err(15204): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/System.err(15204): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/System.err(15204): 	at java.lang.Thread.run(Thread.java:764)
I/WorkerWrapper(15204): Worker result FAILURE for Work [ id=f27e5d6b-a588-4ee3-886e-74220a3f6a2c, tags={ flutter_download_task, vn.hunghd.flutterdownloader.DownloadWorker } ]

pdf.save is missing

Compiler message:
lib/DownloadinTransactions.dart:142:29: Error: The method 'save' isn't defined for the class 'widget::Document'.
Try correcting the name to the name of an existing method, or defining a method named 'save'.
file.writeAsBytesSync(pdf.save());
^^^^
Compiler failed on /Users/ravipoovaiah/Documents/Flutter/Git/jellow_senior_/mbank2/lib/DownloadinTransactions.dart

Build fails when using with google_sign_in package

Hi,
I get the message:

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:preDebugBuild'.

Android dependency 'android.arch.lifecycle:runtime' has different version for the compile (1.0.0) and runtime (1.1.0) classpath. You should manually set the same version via DependencyResolution


my pubspec.yaml:

dependencies:
flutter:
sdk: flutter
flutter_downloader: ^1.1.4
path_provider: ^0.4.1
google_sign_in: ^3.2.4

thanks

Error: Use of stream types is deprecated for operations other than volume control

adding fileName creates error:

W/Notification(29438): Use of stream types is deprecated for operations other than volume control
W/Notification(29438): See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
D/DownloadWorker(29438): Content-Type = image/jpeg
D/DownloadWorker(29438): Content-Length = 594262
D/DownloadWorker(29438): fileName = Image
W/Notification(29438): Use of stream types is deprecated for operations other than volume control
W/Notification(29438): See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
W/System.err(29438): java.lang.NullPointerException
W/System.err(29438): at java.io.FileOutputStream.(FileOutputStream.java:212)
W/System.err(29438): at java.io.FileOutputStream.(FileOutputStream.java:142)
W/System.err(29438): at vn.hunghd.flutterdownloader.DownloadWorker.downloadFile(DownloadWorker.java:188)
W/System.err(29438): at vn.hunghd.flutterdownloader.DownloadWorker.doWork(DownloadWorker.java:102)
W/System.err(29438): at androidx.work.Worker$1.run(Worker.java:57)
W/System.err(29438): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
W/System.err(29438): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
W/System.err(29438): at java.lang.Thread.run(Thread.java:764)
I/WorkerWrapper(29438): Worker result FAILURE for Work [ id=f01b965e-99e8-436c-89f3-dd20e24da2b2, tags={ flutter_download_task, vn.hunghd.flutterdownloader.DownloadWorker } ]

  await FlutterDownloader.enqueue(
    fileName: 'Image',
    url: document_url,
    savedDir: appDocPath,
    showNotification: true, 
    openFileFromNotification: true
  );
  await FlutterDownloader.loadTasks();

Removing fileName: 'Image', downloads file successfully with name for ex..

inline: filename*=utf-8*"1234567

flutter docotor -v

[✓] Flutter (Channel dev, v0.11.6, on Mac OS X 10.14 18A391, locale en-IN)
• Flutter version 0.11.6 at /Users/apurvb/dev/flutter
• Framework revision d44aa57c12 (3 days ago), 2018-11-14 11:09:56 -0800
• Engine revision 114d33d3ca
• Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)

[✓] Android toolchain - develop for Android devices (Android SDK 28.0.3)
• Android SDK at /Users/apurvb/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
• All Android licenses accepted.

[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 10.1, Build version 10B61
• ios-deploy 1.9.2
• CocoaPods version 1.5.3

[✓] Android Studio (version 3.2)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 30.0.1
• Dart plugin version 181.5656
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

[✓] Connected device (1 available)
• G • G350RK048196015S • android-arm64 • Android 8.1.0 (API 27)

Android: Initializing only works once

I/flutter (19352): Caught error: MissingPluginException(No implementation found for method initialize on channel vn.hunghd/downloader)
I/flutter (19352): #0      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:278:7)
I/flutter (19352): <asynchronous suspension>
I/flutter (19352): #1      FlutterDownloader.initialize (package:flutter_downloader/flutter_downloader.dart:88:27)
I/flutter (19352): <asynchronous suspension>

[IOS] loadAllTasks always return null.

Env:
IOS 12.1 (iPhone X simulator)
downloader: v1.1.3

Already config it following the README.md in xcode. No error logs for sqlite but loadAllTasks returns null. Works fine in Android.

Any idea I get version error with 'android.arch.core:runtime'?

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:preDebugBuild'.

Android dependency 'android.arch.core:runtime' has different version for the compile (1.1.0) and runtime (1.1.1) classpath. You should manually set the same version via DependencyResolution

Downloaded zip corrupted

await FlutterDownloader.enqueue(    
   url: MY_BASE_API + '/test-export.zip',
   headers: {
       'Content-Type': 'application/zip',
    },
    savedDir: _localPath,
    showNotification: true,
    openFileFromNotification: true,
);

I've tried with Content-Type: application/octet-stream and Content-Type: application/force-download but when I try to open the downloaded file, it's like it is corrupted: impossible to open

Clean database on Android

As far as I can see old tasks pile up and will not get cleaned from the database. Or do I miss something?

(Andriod)resource xml/provider_paths (aka com.example.downtaskdemo:xml/provider_paths) not found.

configure AndroidManifest.xml use


  • What went wrong:
    Execution failed for task ':app:processDebugResources'.

Android resource linking failed
Output: /Users/bocai/Code/Flutter/downtask_demo/build/app/intermediates/merged_manifests/debug/processDebugManifest/merged/AndroidManifest.xml:59: error: resource xml/provider_paths (aka com.example.downtaskdemo:xml/provider_paths) not found.
error: failed processing manifest.

Command: /Users/bocai/.gradle/caches/transforms-1/files-1.1/aapt2-3.2.1-4818971-osx.jar/8848f4decba9eba34304a16ea15c97ed/aapt2-3.2.1-4818971-osx/aapt2 link -I
/Users/bocai/Library/Android/sdk/platforms/android-27/android.jar
--manifest
/Users/bocai/Code/Flutter/downtask_demo/build/app/intermediates/merged_manifests/debug/processDebugManifest/merged/AndroidManifest.xml
-o
/Users/bocai/Code/Flutter/downtask_demo/build/app/intermediates/processed_res/debug/processDebugResources/out/resources-debug.ap_
-R
@/Users/bocai/Code/Flutter/downtask_demo/build/app/intermediates/incremental/processDebugResources/resources-list-for-resources-debug.ap_.txt
--auto-add-overlay
--java
/Users/bocai/Code/Flutter/downtask_demo/build/app/generated/not_namespaced_r_class_sources/debug/processDebugResources/r
--custom-package
com.example.downtaskdemo
-0
apk
--no-version-vectors
Daemon: AAPT2 aapt2-3.2.1-4818971-osx Daemon #0
Output: /Users/bocai/Code/Flutter/downtask_demo/build/app/intermediates/merged_manifests/debug/processDebugManifest/merged/AndroidManifest.xml:59: AAPT: error: resource xml/provider_paths (aka com.example.downtaskdemo:xml/provider_paths) not found.

Parse error to open file after download

When a download is complete and the notification is tapped, the file is open, but showing me a dialog error

"Parse error

There was a problem parsing the package".

But, when I open downloaded file by app for managed files, the file is open correctly.

build fails after including package (flutter_downloader: ^1.0.6)

Getting following error after including package
flutter_downloader: ^1.0.6

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: ...

Program type already present: com.google.common.util.concurrent.ListenableFuture

flutter doctor

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, v0.9.4, on Mac OS X 10.13.6 17G65, locale en-IN)
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.2)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.0)
[✓] Android Studio (version 3.2)
[!] VS Code (version 1.28.2)
[✓] Connected devices (1 available)

DownloadTask.filename is null

My loaded DownloadTask has a null filename.

Here is my callback where I load the completed DownloadTask and query the filename:

FlutterDownloader.registerCallback((id, status, progress) async {
    print('Download task ($id) is in status ($status) with progress: $progress%');

    if (status == DownloadTaskStatus.complete) {
      print('Download finished. Now reading file.');
      final DownloadTask task =
          (await FlutterDownloader.loadTasks()).firstWhere((DownloadTask task) => task.taskId == id);
      print('Task progress: ${task.progress}, status: ${task.status}, filename: ${task.filename}');
      completer.complete('Done');
    } else if (status == DownloadTaskStatus.failed) {
      completer.completeError('Failed to download file.');
    }
  });

Here is my console output:

flutter: Download task (io.fluttery.downloadTest.download.background.1540617130.731269.1) is in status (DownloadTaskStatus(3)) with progress: 100%
flutter: Download finished. Now reading file.
methodCallHandler: loadTasks
Query was executed successfully. Affected rows = 1
execute query: SELECT * FROM task
open DB successfully
Load tasks successfully
flutter: Task progress: 100, status: DownloadTaskStatus(3), filename: <null>

This is currently preventing me from reading the file that I downloaded because I don't know what it's called.

Cant access activity when using custom application class

My project uses a plugin that requires a custom MainApplication class (audio_service).

<application
        android:name="io.flutter.mobile.app.MainApplication"
        android:label="app"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <meta-data
                android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                android:value="true" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <service android:name="com.ryanheise.audioservice.AudioService">
            <intent-filter>
                <action android:name="android.media.browse.MediaBrowserService" />
            </intent-filter>
        </service>

        <receiver android:name="android.support.v4.media.session.MediaButtonReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_BUTTON" />
            </intent-filter>
        </receiver>

    </application>

When I navigate to the view that loads this plugin, I get the following error:

09:50:33.589 44 info flutter.tools E/AndroidRuntime( 2901): java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.Application android.app.Activity.getApplication()' on a null object reference

Is there an easy way to reference the main application activity? Or perhaps add a check in FlutterDownloaderPlugin.java line 65:

public static void registerWith(PluginRegistry.Registrar registrar) {
        final FlutterDownloaderPlugin plugin = new FlutterDownloaderPlugin(registrar.context(), registrar.messenger());
        if(registrar.activity() != null){
            registrar.activity().getApplication().registerActivityLifecycleCallbacks(plugin);
        }
    }

I don't need the downloader plugin in the same view as the audio_service

What permission to make this work?

From the document,
"You have to save your downloaded files in external storage"

What if the phone doesn't have external storage? even I use, I still get error

java.io.FileNotFoundException: /storage/emulated/0/m.apk (Permission denied)

Seems I still need set permission?

Really need some guideline to use this plugin easier.

(Android) SQLiteConnection object for database was leaked

I am getting a lot of these messages:

W/SQLiteConnectionPool( 5165): A SQLiteConnection object for database '$pathToDB/download_tasks.db' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
W/System  ( 5165): A resource failed to call close. 

Remove task

How can I remove a task?!

something like this:
FlutterDownloader.remove(taskId: taskId)

Thank you so much for the plugin,

Some file can`t use pause when download

i use the example code , but not yours file. when i use the pause, some file will error:
save partial downloaded data to a file: failure
"BackgroundDownloadTask <952771EC-E5EA-4572-88D5-FEF0DF6E9969>.<4>",
"LocalDownloadTask <952771EC-E5EA-4572-88D5-FEF0DF6E9969>.<4>"
), _NSURLErrorFailingURLSessionTaskErrorKey=BackgroundDownloadTask <952771EC-E5EA-4572-88D5-FEF0DF6E9969>.<4>, NSURLSessionDownloadTaskResumeData=<62706c69 73743030 d4010203 04050608 09582476 65727369 6f6e5824 6f626a65 63747359 24617263 68697665 72542474 6f701200 0186a0a1 0755246e 756c6c5f 100f4e53 4b657965 64417263 68697665 72d10a0b 5f101b4e 534b6579 65644172 63686976 65526f6f 744f626a 6563744b 65798000 08111a23 2d323739 3f515472 00000000 00000101 00000000 0000000c 00000000 00000000 00000000 00000074>, NSLocalizedDescription=cancelled} [-999]
URLSession:task:didCompleteWithError:
HTTP status code: 200
Download completed with error: cancelled

and when i use resume:
flutter: not found resume data, this task cannot be resume

so,whats wrong with it? is there something wrong on server? please help me. and im sorry to my english is poor

(iOS) Tasks do not run when application has quit

Background fetch and Remote notifications are enabled. AppDelegate.m looks like this:

#include "AppDelegate.h"
#include "GeneratedPluginRegistrant.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GeneratedPluginRegistrant registerWithRegistry:self];
  // Override point for customization after application launch.
  return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)(void))completionHandler {
    completionHandler();
}

@end

Maybe related to #7?

(iOS) Crash when opening app with previously unfinished tasks

To reproduce:

  1. Schedule tasks
  2. Quit app
  3. Start app

Flutter_downloader version used: 0.1.0

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter'
*** First throw call stack:
(
	0   CoreFoundation                      0x00000001126777f6 __exceptionPreprocess + 294
	1   libobjc.A.dylib                     0x00000001117f1035 objc_exception_throw + 48
	2   CoreFoundation                      0x0000000112677675 +[NSException raise:format:] + 197
	3   Foundation                          0x00000001112b2422 -[NSURL(NSURL) initFileURLWithPath:] + 127
	4   Foundation                          0x00000001112b2c8e +[NSURL(NSURL) fileURLWithPath:] + 45
	5   Runner                              0x000000010f9ec3ca -[FlutterDownloaderPlugin URLSession:downloadTask:didFinishDownloadingToURL:] + 682
	6   CFNetwork                           0x000000011757c5f8 __82-[NSURLSession delegate_downloadTask:didFinishDownloadingToURL:completionHandler:]_block_invoke + 38
	7   Foundation                          0x000000011125f2b7 __NS<…>

Bulk downloads

It would be nice to be able to schedule lot's (hundreds) of downloads at once. It should be configurable how many of them run at the same time (#6). Not sure if this is in the scope of this plugin. Just close if you think it should be done somewhere else.

Cancel request

Will we be seeing the following on the notification bar?

  • Cancel action button
  • Download size

Set max concurrent download tasks

As I understand it this is currently hardcoded to 5 tasks on iOS. It would be nice to add this to the Android side and maybe have it configurable.

Add Ref and/or URL and/or Filename to DownloadTask object

Adding a ref and/or url and/or filename will make using this library easier as the user wont have to manage the tasks in their app.

Like the example in the repo which saves the tasks in a json file, that wont be needed anymore if there is user provided ref or filename or url in DownloadTask object.

Great library BTW.

How can I download the file into AppPath?

flutter_downloader: ^1.1.6
My files can't be opened by other application.So I use getApplicationDocumentsDirectory() .

example/main.dart

...
_localPath = (await _findLocalPath()) + '/Download';
Future<String> _findLocalPath() async {
  final directory =  await getApplicationDocumentsDirectory();
  return directory.path;
}
...

It's in debug mode.
But it happens error.
DownloadWorker showed saveDir is /data/user/0/com.example.helloworld/app_flutter/Download,
but error message is Failed to find configured root that contains /data/data/com.example.helloworld/app_flutter/Download/Sand_Dunes_in_Death_Valley_National_Park.jpg

W/WM-WorkSpec(28239): Backoff delay duration less than minimum value
I/flutter (28239): Download task is enqueued with id(0e4f54f1-e6cd-4bd7-b422-e2438b6457fb)
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(1)) and process (0)
D/DownloadWorker(28239): DownloadWorker{url=https://upload.wikimedia.org/wikipedia/commons/b/b2/Sand_Dunes_in_Death_Valley_National_Park.jpg,filename=null,savedDir=/data/user/0/com.example.helloworld/app_flutter/Download,header={"auth": "test_for_sql_encoding"},isResume=false
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(2)) and process (0)
D/DownloadWorker(28239): Headers = {"auth": "test_for_sql_encoding"}
D/DownloadWorker(28239): Content-Type = image/jpeg
D/DownloadWorker(28239): Content-Length = 1363085
D/DownloadWorker(28239): Content-Disposition = null
D/DownloadWorker(28239): fileName = Sand_Dunes_in_Death_Valley_National_Park.jpg
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(2)) and process (1)
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(2)) and process (12)
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(2)) and process (23)
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(2)) and process (34)
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(2)) and process (45)
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(2)) and process (56)
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(2)) and process (67)
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(2)) and process (78)
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(2)) and process (89)
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(2)) and process (100)
I/flutter (28239): Download task (0e4f54f1-e6cd-4bd7-b422-e2438b6457fb) is in status (DownloadTaskStatus(4)) and process (-1)
W/System.err(28239): java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/com.example.helloworld/app_flutter/Download/Sand_Dunes_in_Death_Valley_National_Park.jpg
W/System.err(28239): 	at androidx.core.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:739)
W/System.err(28239): 	at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:418)
W/System.err(28239): 	at vn.hunghd.flutterdownloader.IntentUtils.getOpenFileIntent(IntentUtils.java:23)
W/System.err(28239): 	at vn.hunghd.flutterdownloader.DownloadWorker.downloadFile(DownloadWorker.java:218)
W/System.err(28239): 	at vn.hunghd.flutterdownloader.DownloadWorker.doWork(DownloadWorker.java:102)
W/System.err(28239): 	at androidx.work.Worker$1.run(Worker.java:84)
W/System.err(28239): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
W/System.err(28239): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
W/System.err(28239): 	at java.lang.Thread.run(Thread.java:764)
I/WM-WorkerWrapper(28239): Worker result FAILURE for Work [ id=0e4f54f1-e6cd-4bd7-b422-e2438b6457fb, tags={ flutter_download_task, vn.hunghd.flutterdownloader.DownloadWorker } ]

android.support.annotation Error when building for Android

This is the error when building for Android

Build Error

/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/DownloadWorker.j
ava:10: error: package android.support.annotation does not exist
import android.support.annotation.NonNull;
                                 ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/DownloadWorker.j
ava:13: error: cannot find symbol
import androidx.core.content.LocalBroadcastManager;
                            ^
  symbol:   class LocalBroadcastManager
  location: package androidx.core.content
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloade
rPlugin.java:12: error: cannot find symbol
import androidx.core.content.LocalBroadcastManager;
                            ^
  symbol:   class LocalBroadcastManager
  location: package androidx.core.content
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/DownloadWorker.java:62: error: cannot find symbol
    public DownloadWorker(@NonNull Context context,
                           ^
  symbol:   class NonNull
  location: class DownloadWorker
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/DownloadWorker.java:63: error: cannot find symbol
                          @NonNull WorkerParameters params) {
                           ^
  symbol:   class NonNull
  location: class DownloadWorker
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/DownloadWorker.java:67: error: cannot find symbol
    @NonNull
     ^
  symbol:   class NonNull
  location: class DownloadWorker
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:39: error: package android.support.annotation does not exist
            @NonNull @android.support.annotation.NonNull Uri uri,
                                                ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:40: error: package android.support.annotation does not exist
            @Nullable @android.support.annotation.Nullable String[] strings,
                                                 ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:41: error: package android.support.annotation does not exist
            @Nullable @android.support.annotation.Nullable String s,
                                                 ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:42: error: package android.support.annotation does not exist
            @Nullable @android.support.annotation.Nullable String[] strings1,
                                                 ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:43: error: package android.support.annotation does not exist
            @Nullable @android.support.annotation.Nullable String s1) {
                                                 ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:36: error: package android.support.annotation does not exist
    @android.support.annotation.Nullable
                               ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:50: error: package android.support.annotation does not exist
    public String getType(@NonNull @android.support.annotation.NonNull Uri uri) {
                                                              ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:48: error: package android.support.annotation does not exist
    @android.support.annotation.Nullable
                               ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:58: error: package android.support.annotation does not exist
            @NonNull @android.support.annotation.NonNull Uri uri,
                                                ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:59: error: package android.support.annotation does not exist
            @Nullable @android.support.annotation.Nullable ContentValues contentValues) {
                                                 ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:55: error: package android.support.annotation does not exist
    @android.support.annotation.Nullable
                               ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:65: error: package android.support.annotation does not exist
            @NonNull @android.support.annotation.NonNull Uri uri,
                                                ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:66: error: package android.support.annotation does not exist
            @Nullable @android.support.annotation.Nullable String s,
                                                 ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:67: error: package android.support.annotation does not exist
            @Nullable @android.support.annotation.Nullable String[] strings) {
                                                 ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:73: error: package android.support.annotation does not exist
            @NonNull @android.support.annotation.NonNull Uri uri,
                                                ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:74: error: package android.support.annotation does not exist
            @Nullable @android.support.annotation.Nullable ContentValues contentValues,
                                                 ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:75: error: package android.support.annotation does not exist
            @Nullable @android.support.annotation.Nullable String s,
                                                 ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderInitializer.java:76: error: package android.support.annotation does not exist
            @Nullable @android.support.annotation.Nullable String[] strings) {
                                                 ^
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/DownloadWorker.java:342: error: cannot find symbol
        LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
        ^
  symbol:   variable LocalBroadcastManager
  location: class DownloadWorker
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderPlugin.java:105: error: cannot find symbol
            LocalBroadcastManager.getInstance(context).registerReceiver(updateProcessEventReceiver,
            ^
  symbol:   variable LocalBroadcastManager
  location: class FlutterDownloaderPlugin
/Users/nemory/Development/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_downloader-1.1.5/android/src/main/java/vn/hunghd/flutterdownloader/FlutterDownloaderPlugin.java:123: error: cannot find symbol
            LocalBroadcastManager.getInstance(context).unregisterReceiver(updateProcessEventReceiver);
            ^
  symbol:   variable LocalBroadcastManager
  location: class FlutterDownloaderPlugin
27 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':flutter_downloader:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 4s

Gradle task 'assembleDebug'... Done                          5.5s
Gradle task assembleDebug failed with exit code 1

Flutter Doctor

[✓] Flutter (Channel beta, v1.1.8, on Mac OS X 10.14.2 18C54, locale en-US)
    • Flutter version 1.1.8 at /Users/nemory/Development/flutter
    • Framework revision 985ccb6d14 (4 weeks ago), 2019-01-08 13:45:55 -0800
    • Engine revision 7112b72cc2
    • Dart version 2.1.1 (build 2.1.1-dev.0.1 ec86471ccc)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/nemory/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
    • All Android licenses accepted.

[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.1, Build version 10B61
    • ios-deploy 1.9.4
    • CocoaPods version 1.5.3

[✓] Android Studio (version 3.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 32.0.1
    • Dart plugin version 182.5124
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)

[✓] VS Code (version 1.30.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 2.22.3

[✓] Connected device (1 available)
    • iPhone XS Max • 39AC65C7-4F9F-454F-B1B5-3376EE04BCBF • ios • iOS 12.1 (simulator)

• No issues found!

Backoff delay duration less than minimun value

when i import flutter_downloader package and run project i got this error.please help

00:05:31.582 1 info flutter.tools Launching lib\main.dart on Redmi 4 in debug mode...
00:05:31.613 2 info flutter.tools Initializing gradle...
00:05:32.975 3 info flutter.tools Resolving dependencies...
00:05:38.969 4 info flutter.tools Running Gradle task 'assembleDebug'...
00:05:44.075 5 info flutter.tools D8: Program type already present: android.support.v4.app.INotificationSideChannel
00:05:44.254 6 info flutter.tools
00:05:44.254 7 info flutter.tools FAILURE: Build failed with an exception.
00:05:44.254 8 info flutter.tools
00:05:44.256 9 info flutter.tools * What went wrong:
00:05:44.256 10 info flutter.tools Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
00:05:44.270 11 info flutter.tools > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\2.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\3.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\4.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\5.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\6.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\7.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\8.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\9.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\10.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\11.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\12.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\13.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\14.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\15.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\16.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\17.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\18.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\19.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\20.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\21.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\22.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\23.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\24.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\25.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\26.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\27.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\28.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\29.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\30.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\31.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\32.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\33.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\34.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\35.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\36.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\37.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\38.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\39.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\40.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\41.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\42.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\43.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\44.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\45.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\46.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\47.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\48.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\49.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\50.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\51.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\52.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\54.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\55.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\56.jar, C:\Users\Manish\Desktop\videostatus\build\app\intermediates\transforms\dexBuilder\debug\57.jar
00:05:44.270 12 info flutter.tools
00:05:44.270 13 info flutter.tools Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
00:05:44.270 14 info flutter.tools Program type already present: android.support.v4.app.INotificationSideChannel
00:05:44.270 15 info flutter.tools
00:05:44.270 16 info flutter.tools * Try:
00:05:44.270 17 info flutter.tools Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
00:05:44.270 18 info flutter.tools
00:05:44.270 19 info flutter.tools * Get more help at https://help.gradle.org
00:05:44.270 20 info flutter.tools
00:05:44.270 21 info flutter.tools BUILD FAILED in 5s
00:05:44.676 22 info flutter.tools *******************************************************************************************
00:05:44.676 23 info flutter.tools The Gradle failure may have been because of AndroidX incompatibilities in this Flutter app.
00:05:44.676 24 info flutter.tools See https://goo.gl/CP92wY for more information on the problem and how to fix it.
00:05:44.676 25 info flutter.tools

(Android) progress Always been 0 && filename Always been null

**I follow the tutorial step by step.
First, configured AndroidManifest.xml according to the Android integration documentation.
Then create a new download task, but the progress is always 0, the file name is null

I read the configuration documentation very carefully, but I still can't find the problem. Why progress not updated, why the filename is null.

**
Below is my code

void initState() {
    super.initState();
    FlutterDownloader.registerCallback((id, status, progress) {
      print("${id}----${progress}");
    });
  }
  createTask() async {
    var path = (await localPath()) + '/Download';
    final taskId = await FlutterDownloader.enqueue(
      url: 'http://pic.netbian.com/uploads/allimg/180803/082838-15332561188e0d.jpg',
      savedDir: path,
      showNotification: true,
      openFileFromNotification: true,
    );

  }

The following code is task information

[
  DownloadTask(taskId: 5d6a9d80-a0c9-4921-bf00-ee25fa954f4e,
  status: DownloadTaskStatus(1), 
  progress: 0, 
  url: http://pic.netbian.com/uploads/allimg/180803/082838-15332561188e0d.jpg,
  filename: null, 
savedDir: /data/user/0/com.example.downtaskdemo/app_flutter/Download)
]

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.downtaskdemo">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="downtask_demo"
        android:icon="@mipmap/ic_launcher">
        <activity
            android:name=".MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <meta-data
                android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                android:value="true" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <!-- 下载管理配置开始 -->
        <provider
            android:name="vn.hunghd.flutterdownloader.DownloadedFileProvider"
            android:authorities="${applicationId}.flutter_downloader.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>
        <provider
            android:name="androidx.work.impl.WorkManagerInitializer"
            android:authorities="${applicationId}.workmanager-init"
            android:enabled="false"
            android:exported="false" />

        <provider
            android:name="vn.hunghd.flutterdownloader.FlutterDownloaderInitializer"
            android:authorities="${applicationId}.flutter-downloader-init"
            android:exported="false">
            <!-- changes this number to configure the maximum number of concurrent tasks -->
            <meta-data
                android:name="vn.hunghd.flutterdownloader.MAX_CONCURRENT_TASKS"
                android:value="5" />
        </provider>
    <!-- 下载管理配置结束 -->
    </application>
</manifest>

build.gradle


buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
    configurations.all {
        exclude group: 'com.google.guava', module: 'failureaccess'

        resolutionStrategy {
            eachDependency { details ->
                if('guava' == details.requested.name) {
                    details.useVersion '27.0-android'
                }
            }
        }
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Error on iOS when downloading file, temp file does not exist

I'm attempting to download a file on iOS. The output shows a series of lines that read "Unknown transfer size" and eventually outputs the following:

Unable to copy temp file. Error: The file “CFNetworkDownload_ZVHUze.tmp” doesn’t exist.

Build failed with an exception.

How it happend

  • What went wrong:
    Execution failed for task ':app:preDebugBuild'.

Android dependency 'android.arch.core:runtime' has different version for the compile (1.1.0) and runtime (1.1.1) classpath. You should manually set the same version via DependencyResolution

There is sound notifications during downloading

When file is in process of downloading there is a sound for every batch of data

I/flutter ( 1201): Download task (c49d7308-7b8f-4654-8281-d55bcc74cbe8) is in status (DownloadTaskStatus(2)) and process (56)
W/Notification( 1201): Use of stream types is deprecated for operations other than volume control
W/Notification( 1201): See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case

I use
Flutter (Channel dev, v0.5.7, on Mac OS X 10.12.6 16G29, locale en-NL)
Android toolchain - develop for Android devices (Android SDK 27.0.3)

And I run your package on Android devices only - emulator Nexus 5 and my mobile Samsung Galaxy S7.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.