【问题标题】:Flutter flutter_webview_plugin error [NSNull length]: unrecognized selector sent to instance on ios颤振flutter_webview_plugin错误[NSNull长度]:无法识别的选择器发送到ios上的实例
【发布时间】:2021-12-29 08:06:49
【问题描述】:

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

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 中,但它不起作用。我还尝试用&lt;true/&gt; 替换&lt;string&gt;YES&lt;/string&gt;,但也没有用。

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

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

我已经用Uri.encodeFull() 包装了网址。

发生错误的代码块如下:

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

【问题讨论】:

    标签: ios objective-c xcode flutter flutterwebviewplugin


    【解决方案1】:

    我之前在用这个包做类似的事情时遇到过这个问题,经过长时间的抨击,我从package documentation找到了这个,

    专注于它所说的这部分

    问题是当您将 withLocalUrl 设置为 true 时,您必须添加 localUrlScope 选项以设置为您的颤振代码中目录的路径,或者您只需从中删除 withLocalUrl:true

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

    【讨论】:

    • 这解决了我的问题。谢谢。我错过了文档中的部分,并认为这是一个 IOS 特定的库错误。
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2011-08-23
    • 2023-03-09
    相关资源
    最近更新 更多