Usando a funcionalidade “share” com Flutter

Estou desenvolvendo um projeto em Flutter, relativamente simples. É uma lista, separadas por dias, e pensei que seria interessante incrementar um pouco, permitindo compartilhar algumas informações dessa lista aos amigos, utilizando WhatsApp/Telegram/E-mail/Instagram/<insira o app aqui>. Pesquisando, achei essa biblioteca, share, desenvolvida pelo próprio pessoal do Flutter, e ela é MUITO fácil de usar. Não acredita? Olha só:

Print da tela retirada do celular, mostrando os aplicativos disponíveis para compartilhar dados, após ter selecionado o item a ser compartilhado.
Print retirado do meu celular, após selecionar o item da lista que eu queria compartilhar.

O primeiro passo, óbvio, é instalar essa dependência no projeto, o que é bastante simples: dentro do arquivo pubspec.yaml, dentro do bloco de dependências (dependencies), acrescentar esse valor: share: ^0.6.3+6 (hoje, 13/04/2020, essa é a versão mais atual. Quando for instalar, verificar se existe alguma mais atual). Depois, só rodar o comando no terminal: flutter pub get. Ou então, se estiver utilizando o Android Studio, tem uma opção na parte superior análoga, que produzirá o mesmo resultado. Para utilizar, é realmente muito simples, veja:

  1. Precisamos importa a biblioteca em nosso código:

import 'package:share/share.dart';

2. Agora, basta chamar o método estático share, dentro da classe Share: Share.share. Esse método recebe como parâmetro posicional uma String (assim como o widget Text). Exemplo:

 Share.share("É realmente muito simples de usar");

Além desse parâmetro posicional, o share aceita mais dois parâmetros nomeados. São eles o subject (assunto) e o sharePositionOrigin (honestamente, não sei como traduzir isso). O subject é utilizado para preencher o assunto do e-mail, caso esse seja o método utilizado pelo usuário. Já o sharePositionOrigin serve para definir a aba de compartilhamento em iPads, e não tem nenhum uso em qualquer outro device. Convenhamos, é um caso de uso bem restrito, possivelmente você não irá utilizar.

Por baixo dos panos, essa biblioteca é um wrapper sobre as funções nativas de cada plataforma para compartilhar dados com outros aplicativos. No Android, ele utiliza o Intent “ACTION_SEND”, e no iOS, o “UIActivityViewController”.

Basicamente é isso. Bastante intuitivo, não?