我无法使用具有window.close()功能的webview flutter 关闭打开的网页。
我在我的应用程序中使用webview_flutter。我一直在使用的网站有一个window.open()功能,可以打开一个包含不同 URL 的新窗口。在新窗口内,有一个关闭按钮可以使用 关闭新窗口window.close()。当我在笔记本电脑和移动设备上使用浏览器测试它时,这工作正常,但当我使用上述 webview 插件在 Flutter 应用程序上尝试时,它无法正常工作。
当我点击关闭按钮时,我在日志中收到此警告。
脚本可能只关闭由它打开的窗口。
我还尝试了其他插件,如flutter_webview_plugin,但也没有运气。
所以我想知道 Flutter webview 的这个功能是否已经可用?
请帮助我,非常感谢任何建议或解决方案。谢谢大家!
更新:我已经测试过但仍然无法正常工作的软件包
android android-webview flutter flutterwebviewplugin webview-flutter
我正在尝试在两个 WebViews(相同的 webviews/URL)之间实现 Hero 转换,使用它作为参考(https://www.youtube.com/watch?v=RA-vLF_vnng)但那个视频只是说我必须使用GlobalKey,使这个作品。但是,我还没有找到如何使用 webviews 来实现这一点的示例,因为我需要将 SAME 状态转换为 2 个不同的小部件,我发现的示例使用全局键只是为了调用某个方法或从其他小部件检索一些数据。
有人在 WebView 中使用了 Hero Transitions 吗?
我所有的尝试都以“重复全局密钥”或“第二个 webviews 重新加载页面”结束。
谢谢...
所以我试图在单击按钮时打开一个简单的网络视图。
这是我的 Scaffold 小部件的主体:
body:
WebView(
initialUrl: "https://www.google.com/",
javascriptMode: JavascriptMode.unrestricted,
)
Run Code Online (Sandbox Code Playgroud)
有趣的是,当我独立运行这个 flutter 项目时,它成功地在 iOS 模拟器中打开了 Webview。但是当我将此 flutter 模块集成到现有的 iOS 应用程序中时,它不起作用(显示空白屏幕)。为了添加颤振模块,我遵循了此链接,模块的其他部分工作正常。
我已经在 flutter 模块的 info.plist 中设置了这个:
<key>io.flutter.embedded_views_preview</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
我在文件中添加了以下版本pubspec.yaml:
webview_flutter: ^0.3.22+1
Run Code Online (Sandbox Code Playgroud) 根据“webview_flutter”的文档,该包需要 Android SDK 20+。flutter pub add webview_flutter运行并重新启动我的应用程序(甚至还没有尝试使用)后WebView,我立即收到以下错误:
One or more plugins require a higher Android SDK version.
Fix this issue by adding the following to /Users/chris/Projects/app/android/app/build.gradle:
android {
compileSdkVersion 32
...
}
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:checkDebugAarMetadata'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
> One or more issues found when checking AAR metadata values:
Dependency 'androidx.webkit:webkit:1.5.0' requires 'compileSdkVersion' to be set to 32 …Run Code Online (Sandbox Code Playgroud) 我正在使用webview_flutter插件,当 webview 在深色模式设备上的任何小米上打开时,它会强制深色模式,我不知道如何避免它
这是我的代码:
import 'dart:async';
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class CdsWebView extends StatefulWidget {
const CdsWebView({
Key key,
@required this.url,
}) : super(key: key);
final String url;
@override
_CdsWebViewState createState() => _CdsWebViewState();
}
class _CdsWebViewState extends State<CdsWebView> {
final Completer<WebViewController> _controller =
Completer<WebViewController>();
WebViewController _webViewController;
bool isLoading = true;
@override
void initState() {
super.initState();
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Builder(builder: (BuildContext context) …Run Code Online (Sandbox Code Playgroud) 我让它在 Android 上工作,WebViewWidget正确显示 html 内容,没有问题。
对于 iOS,它仅显示空白/白色。我尝试了网上人们建议的方法,即在 Info.plist 中添加几行,允许 iOS 中的 WKWebView 加载并显示 http(不安全,不仅仅是 https):
<key>io.flutter.embedded_views_preview</key>
<string>YES</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
Run Code Online (Sandbox Code Playgroud)
(^^我真的不知道这些行各自的作用)
(^^我也尝试过小写“ yes”并<true/>作为第一行的值)
我跑了flutter clean,然后flutter pub get删除了 Podfile.lock,跑了pod install很多次(在 ios 文件夹中),但我仍然无法在 iOS 上的 webview 中显示内容(它适用于 Android),只有空白区域html 内容应该出现。
值得一提的是,我既不从 http 也不从 https 获取 html,但我加载一个字符串(即 html)并将其设置如下:
String text = ...
await _controller.loadHtmlString(text);
Run Code Online (Sandbox Code Playgroud)
有没有办法欺骗 iOS 认为 html 来自 https?
这些是我在控制台中看到打印出来的一些常见消息(不是红色,只是常规颜色),并且我仅在从 android studio 运行应用程序时收到这些消息,而不是 XCode(在真正的 iOS 设备上): …
body: const Center(
// Center is a layout widget. It takes a single child and positions it
// in the middle of the parent.
child: WebView(
initialUrl: "https://xxxx",
navigationDelegate: (navigation) {
return NavigationDecision.navigate;
},
),
),
Run Code Online (Sandbox Code Playgroud)
编译的时候,发生了错误。
lib/main.dart:84:31: Error: Not a constant expression.
navigationDelegate: (navigation) {
^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
当我使用flutter-2.2.0and时webview_flutter-2.0.13,上面的代码工作正常。但是当我将 flutter 升级到 2.5.2 并将 webview_flutter 升级到 2.0.13 后,发生了错误。环境(颤振2.5.2):
environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
webview_flutter: 2.1.1
Run Code Online (Sandbox Code Playgroud) 当我在 Flutter WebView 中点击网站上的照片上传输入时,我想从手机中选择并上传照片。我不知道如何解决这个问题。你能帮我吗?
\n网站代码如下:
\n<div class="foto-upload">\n <label class="foto-buton">\n <input type="file" name="resim" multiple="multiple" id="fileupload">\n <i class="fa fa-upload"></i>\n <span>FOTO\xc4\x9eRAF EKLE</span>\n <b>YA DA S\xc3\x9cR\xc3\x9cKLE BIRAK</b>\n </label>\n <input type="hidden" name="thumb_id" id="thumb_id" value="">\n <div class="foto-list">\n <div class="foto-count">EKLED\xc4\xb0\xc4\x9e\xc4\xb0N\xc4\xb0Z FOTO\xc4\x9eRAF ADED\xc4\xb0: \n <span id="mediaCount" data-total="0">0/10</span>\n <span id="mediaStatus"></span>\n <span id="filePercent"></span>\n </div>\n <ul>\n <li><i class="fa fa-image"></i></li>\n <li><i class="fa fa-image"></i></li>\n <li><i class="fa fa-image"></i></li>\n <li><i class="fa fa-image"></i></li>\n <li><i class="fa fa-image"></i></li>\n <li><i class="fa fa-image"></i></li>\n <li><i class="fa fa-image"></i></li>\n <li><i class="fa fa-image"></i></li>\n <li><i class="fa fa-image"></i></li>\n <li><i class="fa fa-image"></i></li>\n </ul>\n </div>\n <div …Run Code Online (Sandbox Code Playgroud)