颤振flutter_webview_plugin错误[NSNull长度]:无法识别的选择器发送到ios上的实例
Posted
技术标签:
【中文标题】颤振flutter_webview_plugin错误[NSNull长度]:无法识别的选择器发送到ios上的实例【英文标题】:Flutter flutter_webview_plugin error [NSNull length]: unrecognized selector sent to instance on 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
中,但它不起作用。我还尝试用<true/>
替换<string>YES</string>
,但也没有用。
我已尝试将目标 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.lock
、build
文件夹,然后运行 flutter clean
,这样之前的一些尝试中所做的更改就不会造成任何问题。
我正在使用带有 Dart 2.13.4、Flutter 2.5.0、XCode 13.0 (13A233) 的 M1 Mac
【问题讨论】:
【参考方案1】:我之前在用这个包做类似的事情时遇到过这个问题,经过长时间的抨击,我从package documentation找到了这个,
专注于它所说的这部分
问题是当您将 withLocalUrl
设置为 true
时,您必须添加 localUrlScope
选项以设置为您的颤振代码中目录的路径,或者您只需从中删除 withLocalUrl:true
。
由于此选项在 Android 中被忽略,因此它可以正常工作,但对于 iOS,我们需要对此进行具体说明
【讨论】:
这解决了我的问题。谢谢。我错过了文档中的部分,并认为这是一个 IOS 特定的库错误。以上是关于颤振flutter_webview_plugin错误[NSNull长度]:无法识别的选择器发送到ios上的实例的主要内容,如果未能解决你的问题,请参考以下文章
(颤振)如果没有互联网连接,如何启动静态 html 页面而不是 URL?
flutter_webview_plugin ?????????????????????????????????