ОБНОВЛЕНИЕ с 15.07.2019.Просто чтобы сэкономить время.Ответ ниже был дан для устаревшего плагина для платежей.После этого команда Flutter создала плагин https://pub.dev/packages/in_app_purchase, и я рекомендую его использовать.
=====
Лучший способ - использовать защищенный внутренний сервер для получения Уведомления разработчиков в режиме реального времени .Но, можно проверить статус прямо в приложении.Таким образом, когда пользователь пытается получить доступ к некоторым платным функциям, вы можете проверить, активна ли его подписка.Ниже приведен пример:
Создайте где-нибудь файл с классом
import 'dart:io' show Platform;
import 'package:flutter/services.dart';
import 'package:flutter_inapp_purchase/flutter_inapp_purchase.dart';
import 'dart:async';
class SubcsriptionStatus {
static Future<bool> subscriptionStatus(
String sku,
[Duration duration = const Duration(days: 30),
Duration grace = const Duration(days: 0)]) async {
if (Platform.isIOS) {
var history = await FlutterInappPurchase.getPurchaseHistory();
for (var purchase in history) {
Duration difference =
DateTime.now().difference(purchase.transactionDate);
if (difference.inMinutes <= (duration + grace).inMinutes &&
purchase.productId == sku) return true;
}
return false;
} else if (Platform.isAndroid) {
var purchases = await FlutterInappPurchase.getAvailablePurchases();
for (var purchase in purchases) {
if (purchase.productId == sku) return true;
}
return false;
}
throw PlatformException(
code: Platform.operatingSystem, message: "platform not supported");
}
}
Импортируйте его, где вам нужно проверить состояние подписки и использовать его в Конструкторе.Например:
class _SubscriptionState extends State<Subscription> {
bool userSubscribed;
_SubscriptionState() {
SubcsriptionStatus.subscriptionStatus(iapId, const Duration(days: 30), const
Duration(days: 0)).then((val) => setState(() {
userSubscribed = val;
}));
}
}
В переменной userSubscribeed будет состояние - true или false.(Обратите внимание, что вы должны добавить flutter_inapp_purchase к своему проекту).