PurchaseWidget: Show an error on the screen

Instead of via a scaffold
This commit is contained in:
Vishesh Handa
2020-07-23 17:54:10 +02:00
parent 2ee25e0b8f
commit 33f34936fa

View File

@ -7,6 +7,7 @@ import 'package:gitjournal/analytics.dart';
import 'package:gitjournal/.env.dart'; import 'package:gitjournal/.env.dart';
import 'package:gitjournal/iap.dart'; import 'package:gitjournal/iap.dart';
import 'package:gitjournal/settings.dart'; import 'package:gitjournal/settings.dart';
import 'package:gitjournal/utils/logger.dart';
import 'package:gitjournal/widgets/purchase_slider.dart'; import 'package:gitjournal/widgets/purchase_slider.dart';
import 'package:purchases_flutter/purchases_flutter.dart'; import 'package:purchases_flutter/purchases_flutter.dart';
@ -88,6 +89,7 @@ class _PurchaseWidgetState extends State<PurchaseWidget> {
Offering _selectedOffering; Offering _selectedOffering;
final defaultSku = "sku_monthly_min2"; final defaultSku = "sku_monthly_min2";
String error = "";
@override @override
void initState() { void initState() {
@ -110,19 +112,17 @@ class _PurchaseWidgetState extends State<PurchaseWidget> {
try { try {
offerings = await Purchases.getOfferings(); offerings = await Purchases.getOfferings();
} catch (e) { } catch (e) {
if (e is PlatformException) { setState(() {
var snackBar = SnackBar(content: Text(e.message)); error = e.toString();
Scaffold.of(context) });
..removeCurrentSnackBar()
..showSnackBar(snackBar);
return; return;
} }
}
var offeringList = offerings.all.values.toList(); var offeringList = offerings.all.values.toList();
offeringList.retainWhere((Offering o) => o.identifier.contains("monthly")); offeringList.retainWhere((Offering o) => o.identifier.contains("monthly"));
offeringList.sort((Offering a, Offering b) => offeringList.sort((Offering a, Offering b) =>
a.monthly.product.price.compareTo(b.monthly.product.price)); a.monthly.product.price.compareTo(b.monthly.product.price));
print("Offerings: $offeringList"); Log.i("Offerings: $offeringList");
// If the widget was removed from the tree while the asynchronous platform // If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling // message was in flight, we want to discard the reply rather than calling
@ -166,6 +166,9 @@ class _PurchaseWidgetState extends State<PurchaseWidget> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (error.isNotEmpty) {
return Text("Failed to load: $error");
}
return _offerings == null return _offerings == null
? const CircularProgressIndicator() ? const CircularProgressIndicator()
: buildBody(context); : buildBody(context);