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.lock
、build
文件夹、运行 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 我们需要具体说明
我正在使用 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.lock
、build
文件夹、运行 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 我们需要具体说明