No meu projeto, quero ouvir se o usuário comprou um item ou não. Meu ponto de partida é assim:
Eu uso o pacote "compra no aplicativo".
final InAppPurchase iap = InAppPurchase.instance;
await iap.restorePurchases();
iap.purchaseStream.listen((purchases){
...
}
Minha pergunta é: O que acontece se um usuário fecha a conexão de internet e a ativa novamente depois de algum tempo. "purchaseStream" continuará escutando ou preciso acioná-lo novamente?
Seguindo a maneira como os streams funcionam no flutter, o que vai acontecer é que quando o usuário desconecta sua internet (intencionalmente ou não), o stream ainda está ativo. Quando a conexão do usuário é restaurada, neste ponto o stream se reconecta (retoma) e emite novos valores daquele momento. Você sempre pode buscar compras anteriores (quando você inicia o aplicativo, quando ocorre uma reconexão, etc) e ele será capturado pelo seu
InAppPurchase.purchaseStream
A documentação diz: “As compras restauradas serão emitidas no InAppPurchase.purchaseStream. Certifique-se de validar as compras restauradas seguindo as melhores práticas para cada loja subjacente:…”
https://pub.dev/packages/in_app_purchase#restoring-previous-purchases