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

Why webview_flutter not working in case of add to app (iOS)?

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

这是我的脚手架小部件的主体:

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

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

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

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

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

webview_flutter: ^0.3.22+1

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

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

我 运行 也研究过这个问题,使用 webview_flutter. Fortunately, the ios setup from flutter_webview_plugin 似乎有效。我在 xcode 的 Info.list:

中使用了这个标签
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSAllowsArbitraryLoadsInWebContent</key>
    <true/>
</dict>

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

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

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