diff --git a/android/app/src/main/AndroidManifestBase.xml b/android/app/src/main/AndroidManifestBase.xml index 22278d5f1..9faf1c704 100644 --- a/android/app/src/main/AndroidManifestBase.xml +++ b/android/app/src/main/AndroidManifestBase.xml @@ -6,6 +6,7 @@ + + + + diff --git a/lib/main.dart b/lib/main.dart index 11eee146b..f93eed545 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -11,6 +11,7 @@ import 'package:flutter/services.dart'; import 'package:hive/hive.dart'; import 'package:cake_wallet/di.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; @@ -44,7 +45,7 @@ final rootKey = GlobalKey(); Future main() async { try { WidgetsFlutterBinding.ensureInitialized(); - + await Permission.camera.request(); final appDir = await getApplicationDocumentsDirectory(); await Hive.close(); Hive.init(appDir.path); diff --git a/lib/src/screens/buy/buy_webview_page.dart b/lib/src/screens/buy/buy_webview_page.dart index 7c0ca903f..3c6089c19 100644 --- a/lib/src/screens/buy/buy_webview_page.dart +++ b/lib/src/screens/buy/buy_webview_page.dart @@ -9,11 +9,10 @@ import 'package:cake_wallet/src/screens/base_page.dart'; import 'package:cake_wallet/store/dashboard/orders_store.dart'; import 'package:cake_wallet/view_model/buy/buy_view_model.dart'; import 'package:flutter/material.dart'; -import 'package:webview_flutter/webview_flutter.dart'; +import 'package:flutter_inappwebview/flutter_inappwebview.dart'; class BuyWebViewPage extends BasePage { - BuyWebViewPage({required this.buyViewModel, - required this.ordersStore, required this.url}); + BuyWebViewPage({required this.buyViewModel, required this.ordersStore, required this.url}); final OrdersStore ordersStore; final String url; @@ -46,12 +45,12 @@ class BuyWebViewPageBody extends StatefulWidget { class BuyWebViewPageBodyState extends State { BuyWebViewPageBodyState() - : _webViewkey = GlobalKey(), - _isSaving = false, - orderId = ''; + : _webViewkey = GlobalKey(), + _isSaving = false, + orderId = ''; String orderId; - WebViewController? _webViewController; + InAppWebViewController? _webViewController; GlobalKey _webViewkey; Timer? _timer; bool _isSaving; @@ -63,8 +62,6 @@ class BuyWebViewPageBodyState extends State { _isSaving = false; widget.ordersStore.orderId = ''; - if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView(); - if (widget.buyViewModel.selectedProvider is WyreBuyProvider) { _saveOrder(keyword: 'completed', splitSymbol: '/'); } @@ -76,31 +73,29 @@ class BuyWebViewPageBodyState extends State { @override Widget build(BuildContext context) { - return WebView( + return InAppWebView( key: _webViewkey, - initialUrl: widget.url, - javascriptMode: JavascriptMode.unrestricted, - onWebViewCreated: (WebViewController controller) => + initialUrlRequest: URLRequest(url: Uri.tryParse(widget.url ?? '')), + onWebViewCreated: (InAppWebViewController controller) => setState(() => _webViewController = controller)); } void _saveOrder({required String keyword, required String splitSymbol}) { _timer?.cancel(); _timer = Timer.periodic(Duration(seconds: 1), (timer) async { - try { if (_webViewController == null || _isSaving) { return; } - final url = await _webViewController!.currentUrl(); - + final url = await _webViewController!.getUrl(); + final urlString = url.toString(); if (url == null) { throw Exception('_saveOrder: Url is null'); } - if (url!.contains(keyword)) { - final urlParts = url!.split(splitSymbol); + if (urlString.toString().contains(keyword)) { + final urlParts = urlString.split(splitSymbol); orderId = urlParts.last; widget.ordersStore.orderId = orderId; diff --git a/pubspec_base.yaml b/pubspec_base.yaml index 00e1a39b1..8c9b75379 100644 --- a/pubspec_base.yaml +++ b/pubspec_base.yaml @@ -38,7 +38,7 @@ dependencies: auto_size_text: ^3.0.0 dotted_border: ^2.0.0+2 smooth_page_indicator: ^1.0.0+2 - webview_flutter: ^3.0.4 + flutter_inappwebview: ^5.7.2+3 flutter_spinkit: ^5.1.0 uni_links: ^0.5.1 lottie: ^1.3.0