flutter_media_downloader 1.0.5 copy "flutter_media_downloader: ^1.0.5" to clipboard
flutter_media_downloader: ^1.0.5 copied to clipboard

This plugin helps user to download medias for example pdf files, image files etc.

flutter_media_downloader #

This plugin helps user to download medias for example pdf files, image files etc. A plugin for creating and managing download tasks. Supports iOS and Android.

This plugin is using native methods for push notifications for both platforms (Android & iOS). This is easy to use plugin.

Working Demo #

DEMO

Android integration #

You just need to add permissions in your manifest file for the push notification. And other permission for read external storage.

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

Open downloaded file from notification #

To make tapping on notification open the downloaded file on Android, add the following code to AndroidManifest.xml:

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.provider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths" />
</provider>

Notes

  • By default location is provided you can also change it as per your need. Apart from this you can also provide filename if you want to change.
  • Here in this plugin for iOS device when media file is downloaded then it is open and from there you can store wherever you wan to store.
  • Here for push notifications in both the devices native methods are used.
  • For the permission handling you don't need manage it externally all the things are setup you just need to use it.

Usage #

Import and full example of using this plugin #

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter_media_downloader/flutter_media_downloader.dart';

void main() {

  runApp(const MyApp());
  WidgetsFlutterBinding.ensureInitialized();
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  final _flutterMediaDownloaderPlugin = MediaDownload();

  @override
  void initState() {
    super.initState();

  }
  @override
  Widget build(BuildContext context) {

    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: ElevatedButton(onPressed: () async {
            _flutterMediaDownloaderPlugin.downloadMedia(context,'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf');
          }, child: const Text('Media Download')),
        ),
      ),
    );
  }
}

Support the Project #

If you find this plugin helpful, consider supporting its development:

Your support is greatly appreciated!

Bugs/Requests #

Feel free to open an issue if you encounter any problems or think that the plugin is missing some feature.

Email parthsheth100@gmail.com