Flutter Heroes
📈 Аналитический обзор Telegram-канала Flutter Heroes
Канал Flutter Heroes (@flutterdev) языкового сегмента Английский является активным участником. Сейчас сообщество объединяет 24 985 подписчиков, занимая 4 956 место в категории Технологии и приложения.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 24 985 подписчиков.
Согласно последним данным от 27 января, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -163, а за последние 24 часа — 0, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 0%. В первые 24 часа после публикации контент обычно набирает N/A% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 0 просмотров. В течение первых суток публикация набирает 0 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 0.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как developer, firebase, widget, hemantpra389, engineer.
📝 Описание и контентная политика
Описание канала не предоставлено.
Благодаря высокой частоте обновлений (последние данные получены 28 января, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
final isAvailable = InAppPurchase.instance.isAvailable(); if(isAvailable){ final response = await IAPInstance.queryProductDetails(skis.toSet()); products.value = response.productDetails; } 2) Then I start listening to the purchaseUpdated stream void _listenToPurchaseUpdated( List<PurchaseDetails> purchaseDetailsList, ) async { if (purchaseDetailsList.isEmpty) { return; } final purchaseDetails = purchaseDetailsList.first; if (purchaseDetails.status == PurchaseStatus.pending) { // PENDING } else { if (purchaseDetails.status == PurchaseStatus.error) { // HANDLE ERROR } else if (purchaseDetails.status == PurchaseStatus.purchased || purchaseDetails.status == PurchaseStatus.restored) { final token = purchaseDetails.verificationData.serverVerificationData; final productId = purchaseDetails.productID; // Here I check if token is valid, and if it is, I update user data in DB final isValid = await checkIsTokenValid(productId, token); if (isValid) { // Show dialog, that purchase was completed successfully if (purchaseDetails.pendingCompletePurchase) { // QUESTION_1: when purchase status is restored, pendingCompletePurchase is always "false". I don't need it to call when purchase is autorenewed? await IAPInstance.completePurchase(purchaseDetails); } } else { // HANDLE ERROR } } } } final Stream purchaseUpdated = IAPInstance.purchaseStream; _subscription = purchaseUpdated.listen((purchaseDetailsList) { _listenToPurchaseUpdated(purchaseDetailsList); }, onDone: () { print('On done callback called'); _subscription.cancel(); // QUESTION_2: Why I cancel subscription here? Is it necessary? }, onError: (error) { // handle error here. print('Error callback called: $error'); }); 3) When the user wants to buy a subscription, I do this:final PurchaseParam purchaseParam = PurchaseParam(productDetails: details); await IAPInstance.buyNonConsumable(purchaseParam: purchaseParam);It will fire an event and the stream callback will be executed.4) The biggest question is about auto-renewal:4.1) When user is outside of app, and the subscription is renewed, how can I detect it and update in my DB? (Both for iOS and Android). My solution is to call IAPInstance.restorePurchase() when app is opened the first time. This will fire purchaseUpdated callback with "restored" purchase status, and then I do my validation with backend, which will check the token and then change user subscription expiration date in my DB. But when I check purchaseDetails.pendingCompletePurchase, it always returns false, when status is restored. Shouldn't I call completePurchase() when purchase is restored? Am I doing it correctly?4.2) When the user is in foreground, i.e. in the application, and subscription expires and renewed, purchaseUpdated callback is not called :(( What to do here? Check expiration time on app open and set timer for calling IAPInstance.restorePurchase()? I think this will also fire the purchaseUpdated callback with "restored" purchase status.P.S. In testing mode, monthly subscription duration is 5 minute, and when I don't open app long time, when I come back, there is no subscription. Is it OK? Is it only because of my test card?Thank you very much! February 15, 2022 at 11:59AM by hmarat https://ift.tt/ugOl8PX
