diff --git a/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk b/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk index 7d6eadd..4884a2e 100644 Binary files a/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk and b/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk differ diff --git a/lib/features/purchase/in_app_purchase.dart b/lib/features/purchase/in_app_purchase.dart index a5d4757..3e98c4b 100644 --- a/lib/features/purchase/in_app_purchase.dart +++ b/lib/features/purchase/in_app_purchase.dart @@ -6,6 +6,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_rustore_billing/pigeons/rustore.dart'; import 'package:in_app_purchase/in_app_purchase.dart'; import 'package:mnemo_cards_common/mnemo_cards_common.dart'; +import 'package:url_launcher/url_launcher_string.dart'; import 'package:webview_flutter/webview_flutter.dart'; import '../../di/injector.dart'; import '../../di/locator.dart'; @@ -64,7 +65,23 @@ class InAppPurchaseService { } final controller = WebViewController() ..setJavaScriptMode(JavaScriptMode.unrestricted) - ..loadRequest(Uri.parse(paymentUrl)); + ..loadRequest(Uri.parse(paymentUrl)) + ..setNavigationDelegate( + NavigationDelegate( + onNavigationRequest: (request) async { + final url = request.url; + if (url.startsWith('http')) { + return NavigationDecision.navigate; + } else { + if (await canLaunchUrlString(url)) { + launchUrlString(url); + return NavigationDecision.prevent; + } + return NavigationDecision.navigate; + } + }, + ), + ); return showModalBottomSheet( context: context ?? scaffoldKey.currentContext!, enableDrag: false,