MapViewPlugin.kt:(168,34):仅允许安全(?。)或非空断言(!!。)调用

时间:2018-11-04 22:29:26

标签: kotlin flutter

不知道如何解决它:

e:
/media/development/tools/flutter/.pub-cache/hosted/pub.dartlang.org/map_view-0.0.14/android/src/main/kotlin/com/apptree
software/mapview/MapViewPlugin.kt: (168, 34): Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Map<String, Any>?

感谢任何提示!

2 个答案:

答案 0 :(得分:0)

看起来您有一个Map<String, Any>类型的变量?在MapViewPlugin.kt中。

问号表示该变量可以为空,并且Kotlin会强制您在访问该变量之前考虑一下后果。因此,您需要使用安全运算符?或非空断言运算符!!来访问它。

如果变量为null,则安全操作符将不会调用函数/属性,而是返回null;如果尝试访问变量,则第二个操作器将抛出NullPointerException(如果变量为null)例如Java)。

Read more here

答案 1 :(得分:0)

您可以在JTorrus's answer中找到解决方案 对于懒惰的人,我将其粘贴在这里:)

  1. 打开Android项目并转到MapView模块,然后在java文件夹内选择MapViewPlugin.kt(这应该是文件路径:/.pub-cache/hosted/pub.dartlang.org/map_view- 0.0.14 / android / src / main / kotlin / com / apptreesoftware / mapview / MapViewPlugin.kt)

  2. 如果您使用的是Android Studio,您将已经看到红色警告。转到第168行,您将在其中找到val cameraDict = mapOptions [“ cameraPosition”]作为地图

  3. 将其更改为此val cameraDict = mapOptions !! [“ cameraPosition”]作为地图

现在应该可以了。