Downloading files in flutter is must required feature to be added into any flutter where their are document or any kind of files that the user want to download & store if for later usage.
Media download in flutter is seamless bring media content to your flutter application.
Flutter Downloader – How to implement files downloading in flutter application
To add download feature in flutter application we will make use of a package called flutter_media_downloader
, This package has capability of downloading any kind of files like, Images, Videos, Document like pdf, docx etc.
Video Tutorial
Download Files in Flutter
1. Create a Flutter Project or Open Existing
Create a new Flutter Project or Open any Existing Flutter in your favorite IDE VSCode or Android Studio. I use android studio for building flutter application.
2. Add flutter_media_downloader
package.
In your flutter project open pubspec.yaml files and under dependencies section add the flutter media downloader package as shown below
#screenshot
and then run flutter pub get
to download the package as external libraries.
3. Add permission for Android & IOS
As the files or media get downloaded from Internet We need Internet Permission & to store the downloaded files locally in mobile devices we need Storage Permission.
Android: Open AndroidManifest.xml file and add below lines
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
iOS: Open info.plist files and add below lines
<dict> <key>NSPhotoLibraryUsageDescription</key> <string>We need access to Photo library</string> </dict>
4. How to Implement flutter media downloader
Complete Source Code
main.dart
import 'package:flutter/material.dart'; import 'package:flutter_media_downloader/flutter_media_downloader.dart'; void main() async{ WidgetsFlutterBinding.ensureInitialized(); runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); // This widget is the root of your application. @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', debugShowCheckedModeBanner: false, theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true, ), home: const MyHomePage(), ); } } class MyHomePage extends StatefulWidget { const MyHomePage({super.key}); @override State<MyHomePage> createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { final _flutterDownload = MediaDownload(); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () async{ _flutterDownload.downloadMedia(context, 'https://32net.id/bukaheula/share/otQ9czP4vdLTyiJdmlAXaNK76xKtu38ykwnTm8q0.pdf'); }, child: Text('Download'), ), ), ); } }