标签: flutter-inappwebview

Flutter 通过 Widget 检测 PointerEvents

我有一个示例代码,可以检测悬停在小部件上的手写笔。

代码来自这个 Stackoverflow Question

简而言之。GestureBinding.instance?.pointerRouter.addGlobalRoute如果事件属于手写笔类型,它会使用绑定并检查处理程序。当手写笔悬停在屏幕上(无接触)时会触发此操作。

它在诸如等小部件上效果很好Text()Container()

问题:

我想在不同的 Widget(Flutter)上使用此功能,InAppWebView但直到笔与表面接触后才会触发该事件。即使在容器上它也不起作用,如果孩子是InAppWebView.

我认为这个问题在其他 Widget 上也会出现。

我尝试了Listener,AbsorbPointerIgnorePointer.

更新1:

当我开始将触控笔悬停在屏幕上时,我可以在调试输出中看到以下内容。

I/ViewRootImpl(23491): updatePointerIcon pointerType = 20001, calling pid = 23491
D/InputManager(23491): setPointerIconType iconId = 20001, callingPid = 23491
Run Code Online (Sandbox Code Playgroud)

更新2:

InAppWebView 有一个useHybridComposition默认false选项。设置一下即可true解决问题。但是 WebView 变得非常慢。

这是显示问题的存储库。

谢谢!

flutter flutter-layout flutter-inappwebview

11
推荐指数
1
解决办法
891
查看次数

FrameEvents(31583):updateAcquireFence:未找到框架

当我切换到使用 InAppwebView 设置的应用程序中的某些页面时,出现此错误( updateAcquireFence: 未找到框架),同一项目在 Android 版本 6 的设备上运行没有任何问题,但在 Android 版本 11 的设备上运行没有任何问题12 我收到此错误。你能帮忙吗,提前谢谢

       InAppWebView(
                    onWebViewCreated: ((_controller) {
                      controller = _controller;
                    }),

                    initialUrlRequest: URLRequest(
                        url: Uri.parse('')),
                  
                    initialOptions: InAppWebViewGroupOptions(

                        crossPlatform: InAppWebViewOptions(
                          javaScriptEnabled: true,
                          mediaPlaybackRequiresUserGesture: false,
                          supportZoom: false,

                        ),

                        android: AndroidInAppWebViewOptions(

                          mixedContentMode: AndroidMixedContentMode

                              .MIXED_CONTENT_ALWAYS_ALLOW,
                        )),

                    onProgressChanged:

                        (InAppWebViewController controller, int progress) {

                      setState(() {

                        this.progress = progress / 100;

                      });
                    },
                  ),
Run Code Online (Sandbox Code Playgroud)

android dart flutter flutter-inappwebview

9
推荐指数
1
解决办法
1万
查看次数

从 flutter_inappwebview 中的 chromeSafariBrowser 中删除网址栏

我正在使用 flutter_inappwebview 的 ChromeSafariBrowser 类来显示包含视频的 webview。我使用这个类是因为它支持 pip 并且还显示视频播放上的媒体控件,而大多数依赖项都没有提供。现在我想删除顶部的网址栏,我该如何实现呢?任何帮助表示感谢,提前致谢..

我想删除这张图片中的矩形标记区域

以下是我的示例代码

RaisedButton(
        onPressed: () async {
          await widget.browser.open(
            url: "https://player.vimeo.com/api/demo",
            options: ChromeSafariBrowserClassOptions(
              android: AndroidChromeCustomTabsOptions(
                addDefaultShareMenuItem: false,    
                enableUrlBarHiding:true,         
                toolbarBackgroundColor: "#000000"
              ),
              ios: IOSSafariOptions(
                barCollapsingEnabled: true,
                preferredBarTintColor: "#000000"
              )
            ),
          );
        },
        child: Text("Open Chrome Safari Browser")
      )
Run Code Online (Sandbox Code Playgroud)

webview dart flutter flutter-inappwebview

8
推荐指数
0
解决办法
970
查看次数

Flutter InAppWebView 如何禁用跨源策略?

我正在使用 InAppWebView 通过监听 onLoadResource 来制作视频下载应用程序,甚至抓取用户播放的视频并在 iframe 中删除视频,由于跨源政策,我无法获取 iframe 中的 url (.mp4, .m3u8......),我确实将allowUniversalAccessFromFileURLs和allowFileAccessFromFileURLs设置为true,但没有结果我无法获取iframe调用的资源:/,这是我的初始选项:

initialOptions: InAppWebViewGroupOptions(
                  android: AndroidInAppWebViewOptions(
                    supportMultipleWindows: true,
                    offscreenPreRaster: true,
                    allowUniversalAccessFromFileURLs: true,
                    allowFileAccessFromFileURLs: true,
                  ),
                  crossPlatform: InAppWebViewOptions(
                    useOnLoadResource: true,
                    debuggingEnabled: true,
                    userAgent:
                        "Mozilla/5.0 (Linux; Android 9; Redmi Note 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Mobile Safari/537.36",
                    javaScriptEnabled: true,
                    javaScriptCanOpenWindowsAutomatically: true,
                  )),
        
Run Code Online (Sandbox Code Playgroud)

如果任何非常熟悉 inappwebview 或 flutter 的人能告诉我如何在 flutter 中禁用跨源策略或如何在不使用代理的情况下监听我的应用程序 http 请求...,我将不胜感激

android cross-domain same-origin-policy flutter flutter-inappwebview

7
推荐指数
1
解决办法
1657
查看次数

在 Flutter InAppWebview 中下载文件

我正在使用 flutter_webview_plugin 包来显示网页。在网页上,我们有一个下载文件的功能。下载文件的逻辑类似于以下代码

 filename = "my-file.txt"
 content = 'any string generated by django'
 response = HttpResponse(content, content_type='text/plain')
 response['Content-Disposition'] = 'attachment;filename={0}'.format(filename) 
 print(response)
 return response
Run Code Online (Sandbox Code Playgroud)

直接在浏览器中调用时工作正常,但在 Flutter Webview 中则没有效果。是否需要手动执行任何操作来处理它?即使我也愿意更改套餐。我也尝试了 flutter_inappwebview 但没有区别。我不想启动任何浏览器的 URL,我只想直接从应用程序下载。可以这样做吗?

download dart flutter flutter-inappwebview

7
推荐指数
1
解决办法
4837
查看次数

Flutter flutter_inappwebview 如何获取响应参数

用户在 InAppWebView 内部导航后,如何从 POST 调用获取响应参数(例如标头)?这个库是否可能/支持这一点?

flutter flutter-inappwebview

7
推荐指数
0
解决办法
404
查看次数

flutter inappwebviewencodeURL 在 Android 中具有错误的字符串,而它在 iOS 中工作正常?

我在我们的应用程序中使用了 inappwebview 。我在iOS和Android的shouldOverrideUrlLoading方法中得到了不同的encodedUrl。虽然在 iOS 中它工作正常,但在 Android 中它没有给出正确的 url。

\n

编码后的URL

\n

iOS: %22坐标%22:%22%7B%5C%22y1%5C%22:193.0,%5C%22x1%5C%22:491.0,%5C%22y2%5C%22:162.0,%5C%22x2%5C %22:522.0%7D%22

\n

android : %22坐标%22:%22%7B/%22y1/%22:521.0,/%22x1/%22:753.0,/%22y2/%22:490.0,/%22x2/%22:784.0%7D%22

\n

解码后的URL

\n

iOS: "坐标" : "{"y1":521.0,"x1":753.0,"y2":490.0,"x2":784.0}"

\n

android: "坐标": "{/"y1/":521.0,/"x1/":753.0,/"y2/":490.0,/"x2/":784.0}"

\n

我得到了 iOS 和 Android 的不同编码字符串。您可以看到 \xe2\x80\x9ccoordinates\xe2\x80\x9d 值,对于 iOS,它是“%5C”,对于 Android,它是“/”。

\n
InAppWebView(\n          key: webViewKey,\n          initialUrlRequest: URLRequest(url: Uri.parse(widget.url)),\n          initialOptions: inAppWebViewGroupOptions(),\n          onWebViewCreated: (InAppWebViewController webViewController) async {\n            _appWebViewController = webViewController;\n            if (widget.onWebViewCreated != null) {\n              widget.onWebViewCreated!(_appWebViewController!);\n            }\n          },\n          onLoadStart: (InAppWebViewController controller, Uri? url) async {\n            if (widget.onProgressChanged != null) {\n              widget.onPageStarted!(url.toString());\n            }\n …
Run Code Online (Sandbox Code Playgroud)

android ios flutter flutterwebviewplugin flutter-inappwebview

7
推荐指数
0
解决办法
266
查看次数

Flutter - 禁用导航 InAppWebView

我是 Flutter 新手,我想在其他小部件之间放置一个 Web 视图,并且我正在使用 InAppWebView flutter 来做到这一点,但我想阻止用户在单击按钮时导航到其他页面在网络视图内。我是否必须为 iOS 和 Android 编写一些本机代码来阻止导航?

谢谢

flutter flutter-inappwebview

6
推荐指数
3
解决办法
1万
查看次数

错误:cannotfindymbolsettings.setAppCachePath(options.appCachePath);符号:methodsetAppCachePath(String)位置:WebSettings 类型的变量设置

有一个 flutter in-appwebview 问题如果有人知道解决方案请帮忙

`C:\src\flutter.pub-cache\hosted\pub.dartlang.org\flutter_inappwebview-5.4.3+7\android\src\main\java\com\pichillilorenzo\flutter_inappwebview\in_app_webview\InAppWebView.java:280:错误:找不到符号settings.setAppCachePath(options.appCachePath); ^ 符号:方法 setAppCachePath(String) 位置:WebSettings 类型的变量设置 C:\src\flutter.pub-cache\hosted\pub.dartlang.org\flutter_inappwebview-5.4.3+7\android\src\main\java\ com\pichillilorenzo\flutter_inappwebview\in_app_webview\InAppWebView.java:494: 错误: 找不到符号 settings.setAppCacheEnabled(false); ^ 符号:方法 setAppCacheEnabled(boolean) 位置:WebSettings 类型的变量设置 C:\src\flutter.pub-cache\hosted\pub.dartlang.org\flutter_inappwebview-5.4.3+7\android\src\main\java\ com\pichillilorenzo\flutter_inappwebview\in_app_webview\InAppWebView.java:504: 错误: 找不到符号 settings.setAppCacheEnabled(true); ^ 符号:方法 setAppCacheEnabled(boolean) 位置:WebSettings 类型的变量设置 C:\src\flutter.pub-cache\hosted\pub.dartlang.org\flutter_inappwebview-5.4.3+7\android\src\main\java\ com\pichillilorenzo\flutter_inappwebview\in_app_webview\InAppWebView.java:515: 错误: 找不到符号 settings.setAppCachePath(ctx.getCacheDir().getAbsolutePath()); ^ 符号:方法 setAppCachePath(String) 位置:WebSettings 类型的变量设置 C:\src\flutter.pub-cache\hosted\pub.dartlang.org\flutter_inappwebview-5.4.3+7\android\src\main\java\ com\pichillilorenzo\flutter_inappwebview\in_app_webview\InAppWebView.java:517: 错误: 找不到符号 settings.setAppCacheEnabled(true); ^ 符号:方法 setAppCacheEnabled(boolean) 位置:WebSettings 类型的变量设置 C:\src\flutter.pub-cache\hosted\pub.dartlang.org\flutter_inappwebview-5.4.3+7\android\src\main\java\ com\pichillilorenzo\flutter_inappwebview\in_app_webview\InAppWebView.java:521: 错误: 找不到符号 settings.setAppCacheEnabled(false); ^ 符号:方法 setAppCacheEnabled(boolean) 位置:WebSettings 类型的变量设置 C:\src\flutter.pub-cache\hosted\pub.dartlang.org\flutter_inappwebview-5.4.3+7\android\src\main\java\ com\pichillilorenzo\flutter_inappwebview\in_app_webview\InAppWebView.java:767: 错误: 找不到符号 settings.setAppCachePath(newOptions.appCachePath); ^ 符号:方法 setAppCachePath(String) 位置:WebSettings 类型的变量设置 注意:某些输入文件使用或覆盖已弃用的 API。注意:使用 -Xlint:deprecation 重新编译以了解详细信息。注意:某些输入文件使用未经检查或不安全的操作。注意:使用 -Xlint:unchecked 重新编译以了解详细信息。7 个错误

失败:构建失败并出现异常。

  • 出了什么问题:任务“:flutter_inappwebview:compileDebugJavaWithJavac”执行失败。

编译失败;有关详细信息,请参阅编译器错误输出。 …

dart flutter flutter-inappwebview

6
推荐指数
1
解决办法
1万
查看次数

当用户尝试使用 flutter_inappwebview 在移动应用程序中上传文件时,如何请求用户权限?

我正在尝试使用 flutter_inappwebviewplugin 创建一个 flutter web 应用程序。在应用程序中,我添加了一个用于文件上传的 dropzone 插件。此功能在浏览器和 Android 应用程序上都运行良好。但在android应用程序中,当用户上传文件时,我试图请求文件存储和相机权限。如果用户允许访问存储,则只有用户可以在应用程序上上传文件。

为了启用相机的使用,我遵循这个

file-upload flutter flutter-inappwebview

5
推荐指数
0
解决办法
683
查看次数