🔁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();
Last updated