Reputation: 11
maximum viewport inset can't be larger than frame flutter WebView when try open iframe URL in WebView flutter on iOS this issue happens
return SingleChildScrollView( child: Container( width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.height+500, child: WebView( debuggingEnabled: false, javascriptMode: JavascriptMode.unrestricted, onWebViewCreated: (controller) { _webViewController = controller; _webViewController.loadUrl(initial_url); }, onWebResourceError: (error) {}, navigationDelegate: (NavigationRequest request) {
// print('test'+page.toString());
if (request.url.contains("https://accept.paymobsolutions.com/api/acceptance/mpgs_secure_callback/get_acs_page?token")) {
_webViewController.loadUrl(request.url);
}else if (request.url.contains("success=true")) {
if (widget.payment_type == "cart_payment") {
OrderDone();
} else if (widget.payment_type == "wallet_payment") {
Navigator.push(context, MaterialPageRoute(builder: (context) {
return Wallet(from_recharge: true);
}));
}
} else if (request.url.contains("https://ordark.com/")) {
ToastComponent.showDialog(
AppLocalizations.of(context).common_payment_cancelled,
context,
gravity: Toast.CENTER,
duration: Toast.LENGTH_LONG);
Navigator.of(context).pop();
// return;
}
},
),
),
);
Upvotes: 0
Views: 1759
Reputation: 705
Please try this, this is worked for me.
final Completer<WebViewController> _controller = Completer<WebViewController>();
final LoadiFramController _iFramController = Get.put(LoadiFramController());
Then in body
Scaffold(
appBar: AppBar(
backgroundColor: AppColors.appColor,
),
body: WebView(
initialUrl: _iFramController.redirectUrl.value +
_iFramController.tokenIFram.value,
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},
javascriptMode: JavascriptMode.unrestricted,
javascriptChannels: Set.from([
JavascriptChannel(
name: 'done',
onMessageReceived: (JavascriptMessage message) {
//This is where you receive message from javascript code and handle in Flutter/Dart like here, the message is just being printed
//in Run/LogCat window of android studio
print("returnURL" + message.message);
})
]),
onProgress: (int progress) {
print('WebView is loading (progress : $progress%)');
},
onPageStarted: (String url) {
print('Page started loading: $url');
},
onPageFinished: (String url) {
print('Page finished loading: $url');
if (url.contains('/failure')) {
goToFailureScreen();
//success
} else if (url.contains('/success')) {
goToSuccess();
} else {}
},
),
),
Upvotes: 0