Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save pichillilorenzo/ee74e103fdc324f761c5fde7b73bd430 to your computer and use it in GitHub Desktop.
Save pichillilorenzo/ee74e103fdc324f761c5fde7b73bd430 to your computer and use it in GitHub Desktop.
InAppWebView - How to enable download files in WebView
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:flutter_downloader/flutter_downloader.dart';
import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
Future main() async {
WidgetsFlutterBinding.ensureInitialized();
await FlutterDownloader.initialize(
debug: true // optional: set false to disable printing logs to console
);
await Permission.storage.request();
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => new _MyAppState();
}
class _MyAppState extends State<MyApp> {
InAppWebViewController _webViewController;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('InAppWebView Example'),
),
body: Container(
child: Column(children: <Widget>[
Expanded(
child: InAppWebView(
initialUrl: "http://ovh.net/files/1Mio.dat",
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
debuggingEnabled: true,
useOnDownloadStart: true
),
),
onWebViewCreated: (InAppWebViewController controller) {
_webViewController = controller;
},
onDownloadStart: (controller, url) async {
print("onDownloadStart $url");
final taskId = await FlutterDownloader.enqueue(
url: url,
savedDir: (await getExternalStorageDirectory()).path,
showNotification: true, // show download progress in status bar (for Android)
openFileFromNotification: true, // click on notification to open downloaded file (for Android)
);
},
))
])),
),
);
}
}
@ranjan51
Copy link

i am not able to download if my file is related to blob URL getting below error.

Update notification: {notificationId: 7, title: blob:
"COMPANY URL", status: RUNNING, progress: 0}
D/DownloadWorker( 5399): Update too frequently!!!!, but it is the final update, we should sleep a second to ensure the update call can be processed
D/DownloadWorker( 5399): Update notification: {notificationId: 7, title: blob: "COMPANY URL" status: FAILED, progress: -1}
W/System.err( 5399): java.net.MalformedURLException: unknown protocol: blob

@EArminjon
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment