mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-29 10:17:16 +08:00
PurchaseWidget: Show an error on the screen
Instead of via a scaffold
This commit is contained in:
@ -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);
|
||||||
|
Reference in New Issue
Block a user