当我关闭应用程序大约一分钟,然后在恢复之前将其移动到后台时,InAppWebView小部件被白色覆盖,或者它只是不显示屏幕上的Web内容.我仍然可以与应用程序暂停之前加载的页面进行交互,我可以听到网站上播放的声音效果,所以它肯定在某种程度上仍然处于活动状态.我只是对如何在恢复应用程序时让它真正显示页面感到困惑.当我重新打开挂起的应用程序时,调试控制台没有显示任何异常;它与InAppWebView实际可见时的输出完全相同.

我试着在我的应用程序中实现了InAppWebView的基本实现,使用了不同的URL,运行Ffltter Clear,运行FightPub升级,运行Ffltter Pub降级,但我仍然遇到这个问题.以下是该页面的代码.

class CustomWebView extends StatefulWidget {
  final String url;

  CustomWebView({required this.url});

  @override
  _CustomWebViewState createState() => _CustomWebViewState();
}

class _CustomWebViewState extends State<CustomWebView>
    with SingleTickerProviderStateMixin, WidgetsBindingObserver {
  bool _isLoading = true; // Initially, webview is loading
  late InAppWebViewController webcontroller;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return InAppWebView(
      key: Key('webview'),
      initialOptions: InAppWebViewGroupOptions(
        crossPlatform: InAppWebViewOptions(
          transparentBackground: true,
          useShouldOverrideUrlLoading: true,
          supportZoom: true,
        ),
        android: AndroidInAppWebViewOptions(
          builtInZoomControls: true,
          loadWithOverviewMode: true,
          useWideViewPort: true,
        ),
        ios: IOSInAppWebViewOptions(
          disableInputAccessoryView: true,
          allowsInlineMediaPlayback: true,
        ),
      ),
      initialUrlRequest: URLRequest(url: Uri.parse(widget.url)),
      shouldOverrideUrlLoading: (controller, navigationAction) async {
        var uri = navigationAction.request.url!;
        if (uri.toString().contains('logout')) {
          logOut(context);
          return NavigationActionPolicy.CANCEL;
        }
        if (uri.toString().contains('whatsapp')) {
          var shareText = await getTextParam(uri.toString());
          Share.share(shareText!);
          return NavigationActionPolicy.CANCEL;
        }
        if (uri.toString().contains('?process_s=3')) {
          var status = await Permission.storage.status;
          if (!status.isGranted) {
            status = await Permission.storage.request();
          }
          if (status.isGranted) {
            Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (context) => GenerateQRPage(
                          url: '',
                        )));
          }
          return NavigationActionPolicy.CANCEL;
        }

        return NavigationActionPolicy.ALLOW;
      },
      onWebViewCreated: (InAppWebViewController controller) {
        webcontroller = controller;
      },
      onLoadStop: (controller, url) async {},
    );
  }
}

推荐答案

已通过将inappwebview更新到最新版本修复此问题.它总是最简单的解决方案哈哈

Ios相关问答推荐

Fastlane,iOS Provisioning Profile推送通知权限(通过示例)&

在Android和iOS上从后台恢复应用程序后,inappwebview上出现白屏?

在选项卡内列出导航内视图断开导航标题的动画

滚动时突出显示工具栏项目

当包含UITextView的inputAccessoryView显示键盘时,iOS UITableView内容会出现UINavigationBar奇怪的错误

OnTapGesture在其修改的视图外部触发

CIKernel的Metal Shader裁剪问题

当应用程序被杀死时是否还能获取位置?

尽管存在浮点错误,如何显示正确的计算结果.计算器应用程序

uikit中如何触发swiftui功能

使用按位|带有布尔操作数

iOS - 判断开发者模式是否开启 (Swift)

iPhone 6 和 6 Plus 媒体查询

如何忽略touch 事件并将它们传递给另一个子视图的 UIControl 对象?

以编程方式获取故事板 ID?

在 Swift 中上传带参数的图像

iOS 应用程序中的手动语言 Select (iPhone 和 iPad)

更新字段时,UITextField值已更改未触发

ARC - __unsafe_unretained 的含义?

错误 itms-90035 - Xcode