Sylvia Esam
Sylvia Esam

Reputation: 11

maximum viewport inset can't be larger than frame flutter webview

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

Answers (1)

Kumar Lokesh Rathod
Kumar Lokesh Rathod

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

Related Questions