为啥 webview_flutter 在添加到应用程序(iOS)的情况下不起作用?

Posted

技术标签:

【中文标题】为啥 webview_flutter 在添加到应用程序(iOS)的情况下不起作用?【英文标题】:Why webview_flutter not working in case of add to app (iOS)?为什么 webview_flutter 在添加到应用程序(iOS)的情况下不起作用? 【发布时间】:2020-11-15 11:20:38 【问题描述】:

所以我试图在单击按钮时打开一个简单的 webview。

这是我的 Scaffold 小部件的主体:

body: 
WebView(
    initialUrl: "https://www.google.com/",
    javascriptMode: JavascriptMode.unrestricted,
)

有趣的是,当我独立运行这个 Flutter 项目时,它成功地在 ios 模拟器中打开了 Webview。 但是当我将这个颤振模块集成到现有的 iOS 应用程序中时,它不起作用(显示空白屏幕)。为了添加颤振模块,我遵循了这个link,模块的其他部分工作正常。

我已经在 flutter 模块的 info.plist 中设置了这个:

<key>io.flutter.embedded_views_preview</key>
<true/>

我在pubspec.yaml 文件中添加了以下版本:

webview_flutter: ^0.3.22+1

【问题讨论】:

【参考方案1】:

经过几个小时的调试发现我们需要在iOS项目info.plist文件中添加这个key,而不是放到flutter模块的iOS文件夹中的info.plist中

<key>io.flutter.embedded_views_preview</key>
<true/>

【讨论】:

【参考方案2】:

我在使用webview_flutter 时也遇到了这个问题。幸运的是,flutter_webview_plugin 的 ios 设置似乎可以正常工作。我在 xcode 的 Info.list 中使用了这个标签:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSAllowsArbitraryLoadsInWebContent</key>
    <true/>
</dict>

请注意,它们目前正在合并到官方 webview_flutter 插件。

【讨论】:

【参考方案3】:

如果您使用的 url 有一些特殊字符。所以,你需要像这样对 URL 进行编码,

 WebView(
      initialUrl: Uri.encodeFull(yourUrl),
      ...
 )

【讨论】:

以上是关于为啥 webview_flutter 在添加到应用程序(iOS)的情况下不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

webview_flutter3.0.4无法加载http图片

在 webview_flutter 中启用捏合和缩放,在哪里添加代码片段 [this.webView.getSettings().setBuiltInZoomControls(true);]

webview_flutter滑动存在卡顿问题的完美解决方法

DataCamp Light在flutter webview中不起作用

如何让 Pinch Zoom 在 webview_flutter 插件上工作

Flutter:webview_flutter插件使用