Flutter flutter_webview_plugin 错误 [NSNull 长度]:无法识别的选择器发送到 ios 上的实例

Flutter flutter_webview_plugin error [NSNull length]: unrecognized selector sent to instance on ios

我正在使用 flutter_webview_plugin: ^0.4.0 加载网站。该应用程序在 Android 上运行良好。在 IOs 我收到错误

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull length]: unrecognized selector sent to instance 0x1fb513aa0'

对于 Xcode 中文件 FlutterWebviewPlugin 中的行 NSURL *scopeUrl = [NSURL fileURLWithPath:localUrlScope];

我已经添加了

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

来自我的 Info.plist.

中的文档

我试过添加

<key>io.flutter.embedded_views_preview</key>
<string>YES</string>

在我的 Info.plist 中,但没有用。我也尝试用 <true/> 替换 <string>YES</string> ,但也没有用。

我已尝试将目标 IOs 版本从 9.0 设置为 13.0,但问题仍然存在。

我正在使用此软件包提供的文件选择器和警报对话框功能,因此无法使用其他功能。

我用 Uri.encodeFull() 包装了 URL。

出现错误的代码块如下:

if (@available(iOS 9.0, *)) {
                    if(localUrlScope == nil) {
                        [self.webview loadFileURL:htmlUrl allowingReadAccessToURL:htmlUrl];
                    }
                    else {
                        NSURL *scopeUrl = [NSURL fileURLWithPath:localUrlScope]; //ERROR OCCURING HERE
                        [self.webview loadFileURL:htmlUrl allowingReadAccessToURL:scopeUrl];
                    }
                } else {
                    @throw @"not available on version earlier than ios 9.0";
                }

我 运行 flutter doctor 没有显示任何问题。

每次我更改代码中的某些内容时,我都会删除 Podfile.lockbuild 文件夹、运行 flutter clean,这样之前的一些尝试中所做的更改不会造成混乱任何东西。

我正在使用带有 Dart 2.13.4、Flutter 2.5.0、XCode 13.0 (13A233)

的 M1 Mac

我早些时候在用这个包做类似的事情时遇到过这个问题,经过长时间的抨击,我从 package documentation,

中发现了这个问题

关注这一部分

当你将 withLocalUrl 设置为 true 时,你必须添加 localUrlScope 选项以将其设置为 flutter 代码中目录的路径,或者你只需​​删除 withLocalUrl:true 来自它。

由于此选项在 Android 中被忽略,因此它可以正常工作,但对于 iOS 我们需要具体说明