In the Flutter code for Android build, I receive error on downloading files flutter_downloader is used

89 views Asked by At

In the Flutter code for Android build, I receive error on downloading files flutter_downloader version 1.8.4. I have tried many ways, the error is not on the callback anymore, the issue is when the actual download need to happen using Java Download Worker. It complains about URL but the URL is correct, I tried newer version of flutter_lownloader, the same issue.

void downloadCallback(String id, DownloadTaskStatus status, int progress) {
  if (kDebugMode) {
    print(
        'Background Isolate Callback: task ($id) is in status ($status) and process ($progress)');
  }
  final SendPort send =
      IsolateNameServer.lookupPortByName('downloader_send_port')!;
  send.send([id, status, progress]);
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  WEB_ARCHIVE_DIR = (await getApplicationSupportDirectory()).path;

  TAB_VIEWER_BOTTOM_OFFSET_1 = 130.0;
  TAB_VIEWER_BOTTOM_OFFSET_2 = 140.0;
  TAB_VIEWER_BOTTOM_OFFSET_3 = 150.0;

  await FlutterDownloader.initialize(debug: kDebugMode, ignoreSsl: true);

  await Permission.camera.request();
  await Permission.microphone.request();
  await Permission.storage.request();

  await FlutterDownloader.registerCallback(downloadCallback);

  runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider(
          create: (context) => WebViewModel(),
        ),
        ChangeNotifierProxyProvider<WebViewModel, BrowserModel>(
          update: (context, webViewModel, browserModel) {
            browserModel!.setCurrentWebViewModel(webViewModel);
            return browserModel;
          },
          create: (BuildContext context) => BrowserModel(),
        ),
      ],
      child: const FlutterBrowserApp(),
    ),
  );
}

Error I receive when downloading a pdf ( I checked the link is ok):

I/flutter (15270): Background Isolate Callback: task (bf183cc8-03bb-4952-a93a-c2f0c94239dd) is in status (DownloadTaskStatus(4)) and process (-1)
D/DownloadWorker(15270): Update notification: {notificationId: 18, title: sample.pdf, status: 4, progress: -1}
W/System.err(15270): java.net.MalformedURLException: no protocol: DownloadStartRequest{contentDisposition: , contentLength: 3028, mimeType: application/pdf, suggestedFilename: sample.pdf, textEncodingName: null, url: https://www.africau.edu/images/default/sample.pdf, userAgent: Mozilla/5.0 (Linux; Android 9; LG-H870 Build/PKQ1.190522.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36}
W/System.err(15270):    at java.net.URL.<init>(URL.java:601)
W/System.err(15270):    at java.net.URL.<init>(URL.java:498)
W/System.err(15270):    at java.net.URL.<init>(URL.java:447)
W/System.err(15270):    at vn.hunghd.flutterdownloader.DownloadWorker.downloadFile(DownloadWorker.java:299)
W/System.err(15270):    at vn.hunghd.flutterdownloader.DownloadWorker.doWork(DownloadWorker.java:229)
W/System.err(15270):    at androidx.work.Worker$1.run(Worker.java:86)
W/System.err(15270):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
W/System.err(15270):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
W/System.err(15270):    at java.lang.Thread.run(Thread.java:1012)
I/WM-WorkerWrapper(15270): Worker result SUCCESS for Work [ id=bf183cc8-03bb-4952-a93a-c2f0c94239dd, tags={ flutter_download_task, vn.hunghd.flutterdownloader.DownloadWorker } ]
1

There are 1 answers

0
JavadT On

It turned out we cannot send uri to flutter downloaded.The url must be string. This is a bug in project flutter_browser file webview_tab.dart. The correct implemenation is as follows.

 await FlutterDownloader.enqueue(
      url: url.url.toString(),
      fileName: fileName,
      savedDir: _dir,
      showNotification: true,
      openFileFromNotification: true,
    );

Instead of enter image description here