Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev1.0.4

akvelon_flutter_share_plugin

Um plugin Flutter para compartilhar texto, mídia e arquivos do seu aplicativo Flutter por meio do diálogo de compartilhamento da plataforma.

Downloads em 30 dias
73
Curtidas
28
Pontos Pub
35

Instalar pacote

flutter pub add akvelon_flutter_share_plugin

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

Um plugin Flutter que permite compartilhar texto, mídia e arquivos do seu aplicativo usando o diálogo nativo de compartilhamento da plataforma. Ele fornece uma interface simples e multiplataforma para integrar funcionalidades de compartilhamento de forma transparente em aplicativos Flutter. O plugin utiliza APIs nativas de compartilhamento no Android e no iOS, garantindo um comportamento consistente entre dispositivos. Suporta o compartilhamento de texto simples, imagens e arquivos, tornando-o ideal para aplicativos que exigem distribuição de conteúdo orientada pelo usuário. O código-fonte está disponível publicamente no GitHub para transparência e personalização.

Casos de uso

  • Compartilhando trechos de texto dentro de um aplicativo
  • Enviar imagens para redes sociais ou aplicativos de mensagens
  • Distribuir arquivos como PDFs ou documentos
  • Habilitar usuários para compartilhar conteúdo com contatos
  • Integrando o compartilhamento nativo em aplicativos multiplataforma

Principais recursos

  • Suporte de compartilhamento entre plataformas
  • API simples para compartilhar texto e mídia
  • Suporte para compartilhamento de arquivos
  • Usa diálogos nativos de compartilhamento da plataforma
  • De código aberto e hospedado publicamente no GitHub

Indicado para

  • Desenvolvedores construindo aplicativos multiplataforma
  • Aplicativos que exigem recursos de compartilhamento de conteúdo
  • Projetos que precisam de integração com compartilhamento nativo
  • Equipes que desejam código transparente e personalizável
  • Aplicativos móveis direcionados para Android e iOS

Considerações

  • Requer permissões específicas da plataforma para compartilhamento de arquivos
  • Limitado à funcionalidade básica de compartilhamento
  • Nenhum componente de interface do usuário embutido além da planilha nativa de compartilhamento
  • Depende da disponibilidade de intenções de compartilhamento na plataforma
  • Pode ser necessário tratamento adicional para arquivos grandes

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

Flutter Share Plugin

A Flutter plugin for both iOS and Android that provides ability to share plain text, links and local files. Multiple file share is also supported.

Screenshots

Click to see how it works

Installation

In the beginning, please add flutter_share_plugin as a dependency in your pubspec.yaml file.

iOS

Make sure that this row exists in your ios/podfile file after target runner:

...

target 'Runner' do
    use_frameworks!

...
Android

Please note that if you want to share files, you need to setup a FileProvider which will give access to the files for sharing with other applications.

Add to AndroidManifest.xml:

<application>
...
<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/file_provider_paths"/>
</provider>
</application>
...

Add res/xml/file_provider_paths.xml:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <cache-path name="cache" path="."/>
    <files-path name="cache" path="."/>
</paths>

For full document about FileProvider please refer to the Android documentation.

Usage

Here is an example of flutter app sharing text, images and files:

...

            RaisedButton(
                onPressed: () {
                  FlutterSharePlugin.shareText("Here is how it works",
                      title: "share text title",
                      subject: "share text subject",
                      url: "https://pub.dev/");
                },
                child: Text("share text"),
              ),
              RaisedButton(
                onPressed: () async {
                  PickedFile f =
                      await picker.getImage(source: ImageSource.gallery);
                  if (f != null) {
                    FlutterSharePlugin.shareSingle(f.path, ShareType.IMAGE,
                        title: "share image title",
                        subject: "share image subject");
                  }
                },
                child: Text("share image"),
              ),
              RaisedButton(
                onPressed: () async {
                  PickedFile f =
                      await picker.getVideo(source: ImageSource.gallery);
                  if (f != null) {
                    FlutterSharePlugin.shareSingle(
                      f.path,
                      ShareType.VIDEO,
                      title: "share video title",
                      subject: "share video subject",
                    );
                  }
                },
                child: Text("share video"),
              ),
              RaisedButton(
                onPressed: () {
                  _shareStorageFile();
                },
                child: Text("share file"),
              ),
              RaisedButton(
                onPressed: () {
                  _shareMultipleImages();
                },
                child: Text("share multiple images"),
              ),
            ],
          ),
        ),
      ),
    ),
  );
}

  ///share the storage file
  _shareStorageFile() async {
    Directory dir = Platform.isAndroid
        ? await getExternalStorageDirectory()
        : await getApplicationDocumentsDirectory();
    File testFile = File("${dir.path}/flutter/test.txt");
    if (!await testFile.exists()) {
      await testFile.create(recursive: true);
      testFile.writeAsStringSync("test for share documents file");
    }
    FlutterSharePlugin.shareSingle(
      testFile.path,
      ShareType.FILE,
      title: "share file title",
      subject: "share file subject",
    );
  }

  ///share multiple images
  _shareMultipleImages() async {
    List<Asset> assetList = await MultiImagePicker.pickImages(maxImages: 5);
    var imageList = List<String>();
    for (var asset in assetList) {
      String path =
          await _writeByteToImageFile(await asset.getByteData(quality: 30));
      imageList.add(path);
    }
    FlutterSharePlugin.shareMultiple(
      imageList,
      ShareType.IMAGE,
      title: "share multiple images title",
      subject: "share multiple images subject",
    );
  }

  Future<String> _writeByteToImageFile(ByteData byteData) async {
    Directory dir = Platform.isAndroid
        ? await getExternalStorageDirectory()
        : await getApplicationDocumentsDirectory();
    File imageFile = new File(
        "${dir.path}/flutter/${DateTime.now().millisecondsSinceEpoch}.png");
    imageFile.createSync(recursive: true);
    imageFile.writeAsBytesSync(byteData.buffer.asUint8List(0));
    return imageFile.path;
  }
}

If you have any troubles, please, create an issue

Categorias

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.