我有一个示例代码,可以检测悬停在小部件上的手写笔。
代码来自这个 Stackoverflow Question。
简而言之。GestureBinding.instance?.pointerRouter.addGlobalRoute如果事件属于手写笔类型,它会使用绑定并检查处理程序。当手写笔悬停在屏幕上(无接触)时会触发此操作。
它在诸如等小部件上效果很好Text()。Container()
我想在不同的 Widget(Flutter)上使用此功能,InAppWebView但直到笔与表面接触后才会触发该事件。即使在容器上它也不起作用,如果孩子是InAppWebView.
我认为这个问题在其他 Widget 上也会出现。
我尝试了Listener,AbsorbPointer和IgnorePointer.
当我开始将触控笔悬停在屏幕上时,我可以在调试输出中看到以下内容。
I/ViewRootImpl(23491): updatePointerIcon pointerType = 20001, calling pid = 23491
D/InputManager(23491): setPointerIconType iconId = 20001, callingPid = 23491
Run Code Online (Sandbox Code Playgroud)
InAppWebView 有一个useHybridComposition默认false选项。设置一下即可true解决问题。但是 WebView 变得非常慢。
谢谢!
当我切换到使用 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) 我正在使用 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) 我正在使用 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
我正在使用 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,我只想直接从应用程序下载。可以这样做吗?
用户在 InAppWebView 内部导航后,如何从 POST 调用获取响应参数(例如标头)?这个库是否可能/支持这一点?
我在我们的应用程序中使用了 inappwebview 。我在iOS和Android的shouldOverrideUrlLoading方法中得到了不同的encodedUrl。虽然在 iOS 中它工作正常,但在 Android 中它没有给出正确的 url。
\n编码后的URL
\niOS: %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
\nandroid : %22坐标%22:%22%7B/%22y1/%22:521.0,/%22x1/%22:753.0,/%22y2/%22:490.0,/%22x2/%22:784.0%7D%22
\n解码后的URL
\niOS: "坐标" : "{"y1":521.0,"x1":753.0,"y2":490.0,"x2":784.0}"
\nandroid: "坐标": "{/"y1/":521.0,/"x1/":753.0,/"y2/":490.0,/"x2/":784.0}"
\n我得到了 iOS 和 Android 的不同编码字符串。您可以看到 \xe2\x80\x9ccoordinates\xe2\x80\x9d 值,对于 iOS,它是“%5C”,对于 Android,它是“/”。
\nInAppWebView(\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
我是 Flutter 新手,我想在其他小部件之间放置一个 Web 视图,并且我正在使用 InAppWebView flutter 来做到这一点,但我想阻止用户在单击按钮时导航到其他页面在网络视图内。我是否必须为 iOS 和 Android 编写一些本机代码来阻止导航?
谢谢
有一个 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”执行失败。
编译失败;有关详细信息,请参阅编译器错误输出。 …
我正在尝试使用 flutter_inappwebviewplugin 创建一个 flutter web 应用程序。在应用程序中,我添加了一个用于文件上传的 dropzone 插件。此功能在浏览器和 Android 应用程序上都运行良好。但在android应用程序中,当用户上传文件时,我试图请求文件存储和相机权限。如果用户允许访问存储,则只有用户可以在应用程序上上传文件。
为了启用相机的使用,我遵循这个