media_file_saver 0.1.1

  • Readme
  • Changelog
  • Example
  • Installing
  • 77

media_file_saver #

🖼️ A plugin for saving images and other media files in the device's pictures directory (Android) or photo library (iOS).

Features #

  • Simplified image and media file download
  • Supports PNG, JPG, JPEG, GIF, MP3 and more
  • Implements native permission (Android) and authorization requests (iOS)

Installation #

Add it to your pubspec.yaml file

dependencies:
   media_file_saver: <PLUGIN_VERSION>

Install it

pub get

Import it

import 'package:media_file_saver/media_file_saver.dart;

Usage #

Eg. Saving image from cache

// Getting the cached image
final file = await DefaultCacheManager().getSingleFile("https//example.com/profile-picture.png");

// Downloading the image file to your photo library
await MediaFileSaver.saveImage(file.readAsBytes());

License #

BSD @joshuadeguzman

0.1.1 #

  • #8 Fix ktlint issue and run flutter format on the lib dart file

0.1.0 #

  • #6 Fixed authorisation issue for iOS

0.0.4 #

  • #5 Migrate to the latest plugin API
  • #3 Fix missing return statement

0.0.3 #

  • Update min Android Studio / Gradle Support

0.0.2 #

  • Add native permission/authorization requests implementation in the plugin code.

0.0.1 #

  • Initial working saving of images, and other media files to the Gallery for both iOS and Android.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:dio/dio.dart';
import 'package:media_file_saver/media_file_saver.dart';
import 'dart:typed_data';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'media_file_helper_example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyHomePageState();
  }
}

class _MyHomePageState extends State<MyHomePage> {
  final _imgUrl =
      "https://upload.wikimedia.org/wikipedia/commons/1/17/Google-flutter-logo.png";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("MediaFileSaver Example"),
      ),
      body: Center(
        child: Column(
          children: <Widget>[
            Image.network(
              _imgUrl,
              height: 200,
              width: 200,
            ),
            Container(
              padding: EdgeInsets.only(top: 15),
              child: RaisedButton(
                onPressed: _saveGoogleImage,
                child: Text("Download Image"),
              ),
              width: 200,
              height: 56,
            ),
          ],
        ),
      ),
    );
  }

  _saveGoogleImage() async {
    var response = await Dio().get(
      _imgUrl,
      options: Options(responseType: ResponseType.bytes),
    );

    bool result = await MediaFileSaver.saveImage(
      Uint8List.fromList(response.data),
    );

    if (result) {
      print("Saved image");
    } else {
      print("Failed to save image");
    }
  }
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  media_file_saver: ^0.1.1

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:media_file_saver/media_file_saver.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
55
Health:
Code health derived from static analysis. [more]
99
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
77
Learn more about scoring.

We analyzed this package on Apr 4, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.6
  • Flutter: 1.12.13+hotfix.8

Health issues and suggestions

Document public APIs. (-1 points)

5 out of 5 API elements have no dartdoc comment.Providing good documentation for libraries, classes, functions, and other API elements improves code readability and helps developers find and use your API.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.1.0 <3.0.0
flutter 0.0.0
Transitive dependencies
collection 1.14.11 1.14.12
meta 1.1.8
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies
flutter_test