diff --git a/lib/features/profile/presentation/widgets/profile_subscription_section_widget.dart b/lib/features/profile/presentation/widgets/profile_subscription_section_widget.dart index 351fd02..d08ee14 100644 --- a/lib/features/profile/presentation/widgets/profile_subscription_section_widget.dart +++ b/lib/features/profile/presentation/widgets/profile_subscription_section_widget.dart @@ -31,8 +31,23 @@ class ProfileSubscriptionSectionWidget extends StatefulWidget { class _ProfileSubscriptionSectionWidgetState extends State { bool _isCancelDialogOpen = false; - void _openCatalog() { - unawaited(context.push(AppRoutePaths.subscriptionsCatalogPath)); + Future _openCatalog() async { + final didPurchase = await context.push(AppRoutePaths.subscriptionsCatalogPath); + if (!mounted) return; + if (didPurchase == true) { + unawaited(context.read().load()); + } + } + + Future _openSubscriptionDetails(SubscriptionCatalogItem item) async { + final didPurchase = await context.push( + AppRoutePaths.subscriptionsDetailsConcretePath(item.id), + extra: item, + ); + if (!mounted) return; + if (didPurchase == true) { + unawaited(context.read().load()); + } } void _showCancelDialog() { @@ -131,14 +146,16 @@ class _ProfileSubscriptionSectionWidgetState extends State context.read().retry(), onRenewPressed: _openCatalog, onCancelPressed: _showCancelDialog, + onSubscriptionCardPressed: item == null ? null : () => _openSubscriptionDetails(item), ); }, ), @@ -154,6 +171,7 @@ final class _ProfileSubscriptionActiveState extends StatelessWidget { final VoidCallback onRetryPressed; final VoidCallback onRenewPressed; final VoidCallback onCancelPressed; + final VoidCallback? onSubscriptionCardPressed; const _ProfileSubscriptionActiveState({ required this.activeSubscription, @@ -163,6 +181,7 @@ final class _ProfileSubscriptionActiveState extends StatelessWidget { required this.onRetryPressed, required this.onRenewPressed, required this.onCancelPressed, + required this.onSubscriptionCardPressed, }); @override @@ -202,7 +221,7 @@ final class _ProfileSubscriptionActiveState extends StatelessWidget { if (item != null) SubscriptionCard( item: item!, - onPressed: () => context.push(AppRoutePaths.subscriptionsDetailsConcretePath(item!.id)), + onPressed: onSubscriptionCardPressed, ) else if (isCardLoading) const _ProfileSubscriptionCardLoadingState() diff --git a/lib/features/subscriptions/presentation/pages/subscriptions_catalog_page.dart b/lib/features/subscriptions/presentation/pages/subscriptions_catalog_page.dart index 1875ec1..5c5adb2 100644 --- a/lib/features/subscriptions/presentation/pages/subscriptions_catalog_page.dart +++ b/lib/features/subscriptions/presentation/pages/subscriptions_catalog_page.dart @@ -121,10 +121,14 @@ class SubscriptionsCatalogPage extends StatelessWidget { final item = items[index]; final onPressed = item.id <= 0 ? null - : () => context.push( - AppRoutePaths.subscriptionsDetailsConcretePath(item.id), - extra: item, - ); + : () async { + final didPurchase = await context.push( + AppRoutePaths.subscriptionsDetailsConcretePath(item.id), + extra: item, + ); + if (!context.mounted || didPurchase != true) return; + context.pop(true); + }; return Padding( padding: EdgeInsets.only(bottom: index == items.length - 1 ? 0 : 12), child: SubscriptionCard( diff --git a/lib/features/subscriptions/presentation/pages/subscriptions_details_page.dart b/lib/features/subscriptions/presentation/pages/subscriptions_details_page.dart index 0d3f3e8..56c5621 100644 --- a/lib/features/subscriptions/presentation/pages/subscriptions_details_page.dart +++ b/lib/features/subscriptions/presentation/pages/subscriptions_details_page.dart @@ -1,5 +1,3 @@ -import 'dart:async'; - import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:go_router/go_router.dart'; @@ -48,7 +46,7 @@ class SubscriptionsDetailsPage extends StatelessWidget { paymentCubit: context.read(), ); if (!context.mounted || didPay != true) return; - context.go(AppRoutePaths.profilePath); + context.pop(true); } @override