diff --git a/lib/features/public_asset/presentation/public_asset_controller.dart b/lib/features/public_asset/presentation/public_asset_controller.dart index 7602ad143..55cac89db 100644 --- a/lib/features/public_asset/presentation/public_asset_controller.dart +++ b/lib/features/public_asset/presentation/public_asset_controller.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:async/async.dart'; +import 'package:back_button_interceptor/back_button_interceptor.dart'; import 'package:core/presentation/state/failure.dart'; import 'package:core/presentation/state/success.dart'; import 'package:core/utils/app_logger.dart'; @@ -54,6 +55,8 @@ class PublicAssetController extends BaseController { AccountId? get accountId => arguments?.accountId; Identity? get identity => arguments?.identity; + static const String _backButtonInterceptorName = 'PublicAssetControllerBackButtonInterceptor'; + void _handleUploadState(Either uploadState) { log('PublicAssetController::handleUploadState::${uploadState.runtimeType}'); uploadState.fold( @@ -90,6 +93,10 @@ class PublicAssetController extends BaseController { void onInit() { super.onInit(); _publicAssetStreamSubscription = _publicAssetStreamGroup.stream.listen(_handleUploadState); + BackButtonInterceptor.add((_, __) { + discardChanges(); + return false; + }, name: _backButtonInterceptorName); } @override @@ -98,6 +105,7 @@ class PublicAssetController extends BaseController { newlyPickedPublicAssetIds.clear(); _publicAssetStreamSubscription?.cancel(); _publicAssetStreamGroup.close(); + BackButtonInterceptor.removeByName(_backButtonInterceptorName); super.onClose(); }