pichillilorenzo / flutter_inappwebview

A Flutter plugin that allows you to add an inline webview, to use a headless webview, and to open an in-app browser window.
https://inappwebview.dev
Apache License 2.0
3.21k stars 1.57k forks source link

White screen after iOS swipe to go back from a PDF #2017

Open EArminjon opened 7 months ago

EArminjon commented 7 months ago

Environment

Technology Version
Flutter version 3.16.8
Plugin version 6.0.0
Android version
iOS version 17.2
macOS version 14.2.1
Xcode version 15.2
Google Chrome version

Device information:

iPhone SE 2 gen but all iPhone got the issue.

Description

Expected behavior: I should be able to go back by swipe current PDF page.

Current behavior: User swipe the PDF page and wait a bit, then the webview is reloaded and a white page replace it. If user put the app in background and resume it, the white screen disappear. WEIRD.

I think the 'window' created automatically by InAppWebview when detecting a PDF is maintained in foreground despite the fact that it is not alive, putting the app in background and then in foreground seems to refresh it.

Steps to reproduce

On iOS :

  1. Run the code bellow
  2. Scroll down the page to see "Technical Documents"
  3. Expand "Technical Documents"
  4. Expand "Product Documents"
  5. Click on the download icons
  6. See the PDF
  7. Swipe to go back (from left to right)
  8. PDF is no longer visible
  9. Wait a bit
  10. White screen is displayed

Note that on Android : nothing happen when user click on the icon because it trigger the onDownloadStartRequest.

@override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: InAppWebView(
          initialUrlRequest: URLRequest(
            url: WebUri(
                "https://www.denmans.co.uk/den/root-category/Solar-PV/Panels/Trina/Trina-415W-Vertex-S-Full-Black-Solar-Panel/p/2501523239"),
          ),
          initialSettings: InAppWebViewSettings(
            allowsBackForwardNavigationGestures: true,
            isInspectable: true,
            javaScriptEnabled: true,
          ),
        ),
      ),
    );
  }

Images

https://github.com/pichillilorenzo/flutter_inappwebview/assets/37028599/1f0fe8c6-6afa-4e48-aa94-9123679851c3

Stacktrace/Logcat

Nothing in logs.

github-actions[bot] commented 7 months ago

👋 @EArminjon

NOTE: This comment is auto-generated.

Are you sure you have already searched for the same problem?

Some people open new issues but they didn't search for something similar or for the same issue. Please, search for it using the GitHub issue search box or on the official inappwebview.dev website, or, also, using Google, StackOverflow, etc. before posting a new one. You may already find an answer to your problem!

If this is really a new issue, then thank you for raising it. I will investigate it and get back to you as soon as possible. Please, make sure you have given me as much context as possible! Also, if you didn't already, post a code example that can replicate this issue.

In the meantime, you can already search for some possible solutions online! Because this plugin uses native WebView, you can search online for the same issue adding android WebView [MY ERROR HERE] or ios WKWebView [MY ERROR HERE] keywords.

Following these steps can save you, me, and other people a lot of time, thanks!

dragondra09 commented 5 months ago

you can try allowsBackForwardNavigationGestures: true -> false

EArminjon commented 5 months ago

I need to react when navigation occurs to decide based on parameters. I can't dynamically change the WebView settings as far I know (changing didn't work, WebView needs to be recreated)