share_it 0.5.1+3

  • Readme
  • Changelog
  • Example
  • Installing
  • 91

share_it #

pub package

A plugin to share text, images and files.

The Android version uses an androidx library. Also remember to add the necessary permissions in your app when needed.

Features:

  • iOS & Android support
  • iPad support
  • Share text, links, images and files
  • Share multiple items
  • Common dart interface methods & specific platform methods
  • Android >= N and Android < N* support for file sharing

TODOs:

  • Android 10 content preview support
  • Check external Android storage support for file sharing

Example #

// just text (or a link)
ShareIt.text(
  content: 'Hello!!!', 
  androidSheetTitle: 'Title here!!'
);
// a link or just text if is an invalid url
ShareIt.link(
  url: 'https://www.google.com', 
  androidSheetTitle: 'Google'
);
// some file
ShareIt.file(
  path: await _imageBundlePath, 
  type: ShareItFileType.image
);

There are also specific platform methods if needed.

--

  • Sharing of files for Android < N only seems to be working for files located in /sdcard (AFAIK).

0.5.1+3 #

  • On iOS the share action sheet is now called asynchronously

0.4.1+2 #

  • Tested behaviour of sharing files: on Android < N you can share files saved on /sdcard on Android >= N you can share files from everywhere (AFAIK)
  • Fixed sharing plain text on multiple items

0.4.0 #

Added support to same multiple items a the same time.

0.3.1+3 #

minor improvements + fixed new "flutter (1.9) analyze" errors

0.3.0+1 #

iPad support + bug fixes

0.2.0+1 #

Bug fixes and added link option

0.1.0+2 #

Small package improvements

0.1.0+1 #

First release, works fine on both Android and iOS.

  • Needs testing on iPad's and older Android versions.

example/lib/main.dart

import 'dart:io' show File, Platform;
import 'package:flutter/material.dart';

import 'package:share_it/share_it.dart';
import 'package:flutter/services.dart' show rootBundle;
import 'package:path_provider/path_provider.dart' show getExternalStorageDirectory, getApplicationDocumentsDirectory;
import 'package:path/path.dart' show join;

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

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              Image.asset('assets/avatar.png', width: 100),
              FlatButton(
                child: Text('Share image'),
                onPressed: () async {
                  ShareIt.file(path: await _imageBundlePath, type: ShareItFileType.image);
                },
              ),
              FlatButton(
                child: Text('Share file'),
                onPressed: () async {
                  ShareIt.file(path: await _fileBundlePath, type: ShareItFileType.anyFile);
                },
              ),
              FlatButton(
                child: Text('Share link method 1'),
                onPressed: () async {
                  ShareIt.text(content: 'https://www.google.com');
                },
              ),
              FlatButton(
                child: Text('Share link method 2'),
                onPressed: () async {
                  ShareIt.link(url: 'https://www.google.com', androidSheetTitle: 'Google');
                },
              ),
              FlatButton(
                child: Text('Share image and text'),
                onPressed: () async {
                  ShareIt.list(
                    androidSheetTitle: 'Multiple stuff!',
                    parameters: [
                      ShareItParameters.plainText(content: 'Example text'),
                      ShareItParameters(
                        type: ShareItFileType.image,
                        path: await _imageBundlePath,
                      )
                    ]
                  );
                },
              )
            ],
          ),
        ),
      ),
    );
  }

  Future<String> get _imageBundlePath async {
    return _fileFromBundle(name: 'avatar.png');
  }

  Future<String> get _fileBundlePath async {
    return _fileFromBundle(name: 'Main.java');
  }

  //

  Future<String> _fileFromBundle({@required String name}) async {
    final directory = Platform.isIOS ? await getApplicationDocumentsDirectory() : await getExternalStorageDirectory();
    final filePath = join(directory.path, name);
    final bundleData = await rootBundle.load('assets/$name');
    List<int> bytes = bundleData.buffer.asUint8List(bundleData.offsetInBytes, bundleData.lengthInBytes);
    final file = await File(filePath).writeAsBytes(bytes);
    return file.path;
  }
}

Use this package as a library

1. Depend on it

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


dependencies:
  share_it: ^0.5.1+3

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:share_it/share_it.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
82
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
91
Learn more about scoring.

We analyzed this package on Mar 30, 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 suggestions

Format lib/share_it.dart.

Run flutter format to format lib/share_it.dart.

Format lib/share_it_android.dart.

Run flutter format to format lib/share_it_android.dart.

Format lib/share_it_ios.dart.

Run flutter format to format lib/share_it_ios.dart.

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