-
-
Save pichillilorenzo/ee74e103fdc324f761c5fde7b73bd430 to your computer and use it in GitHub Desktop.
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) | |
); | |
}, | |
)) | |
])), | |
), | |
); | |
} | |
} |
LATEST APPROACH: As at August 2023
Well it seems the download started but the app crashed showing the error
D/DownloadWorker(26207): Update too frequently!!!!, this should be dropped
how did you made it to work?
`onDownloadStart: (controller, url) async {
print("Download Start: $url");
// Check if the file is a PDF
if (url.toString().toLowerCase().endsWith('.pdf')) {
// Open PDF viewer using url_launcher
// ignore: deprecated_member_use
if (await canLaunch(url.toString())) {
// ignore: deprecated_member_use
await launch(url.toString());
} else {
log("Could not launch PDF viewer");
}
} else {
// Launch for other file types
if (await canLaunch(url.toString())) {
await launch(url.toString());
} else {
log("Could not launch file");
}
//log("Handle other file types or open in-app viewer");
}
},`
try this code it worked for me
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
@ranjan51 does this help you pichillilorenzo/flutter_inappwebview#2212 ?
LATEST APPROACH: As at August 2023