🔁Social Media Share

Esta seção busca abordar um caso de uso, que pode aparecer em várias aplicações, onde é possível fazer o compartilhamento de imagem ou texto, nas redes sociais.

Para que isso seja possível, é usado o plugin social_share.

O plugin é muito simples de ser utilizado, sendo necessário uma pequena configuração para Android e iOS muito bem documentada na página do próprio.

Temos a possibilidade de compartilhar em várias redes sociais de maneira direta. Para o compartilhamento de textos existem as seguintes possibilidades:

  • Whatsapp ->

    SocialShare.shareWhatsapp("texto aqui");
  • Twitter ->

    SocialShare.shareTwitter("texto aqui");
  • Sms ->

    SocialShare.shareSms("texto aqui");
  • Telegram ->

    SocialShare.shareTelegram("texto aqui");

E há tambem a possibilidade de compartilhar imagens diretamente para o stories do Instragram e do Facebook. Com shareInstragamStory ou shareFacebookStory. Tendo a possiblidade de atribuir uma imagem de fundo, cor de fundo e cor do topo.

SocialShare.shareInstagramStory(
 appId: '',
 imagePath: currentFileToShare?.path ?? "",
 backgroundResourcePath: background.path,
);

E caso você deseje que o usuário possa compartilhar imagem ou texto, para outras redes sociais a não ser essas, você pode usar a função abaixo, que pode receber tanto um texto quanto uma imagem.

await SocialShare.shareOptions("texto aqui", imagePath: image.path);

Trazendo um caso de uso mais real e o uso de mais um plugin, o que fiz utilizando o plugin screenshot, para que fosse possível gerar uma imagem a partir de um conjunto de widgets da tela. Abaixo vou demonstrar como foi feito o código, para tirar o screenshot, e fazer a conversão para um arquivo file, passível de compartilhamento.

screenshotController
        .captureFromWidget(
      Container(
        child: Text("Widget aqui"),
      ),
      pixelRatio: 3,
    )
        .then(
      (capturedImage) async {
        final tempDir = await getTemporaryDirectory();
        currentFileToShare = await File('${tempDir.path}/image.png').create();
        currentFileToShare?.writeAsBytesSync(capturedImage);

        SocialShare.shareInstagramStory(appId: "", imagePath: currentFileToShare!.path);
      },
    );

Onde o screenshotController era um instância do tipo ScreenshotController();

Com o plugin de screenshot é possível capturar widgets de várias maneiras e através de stacks.

Last updated