Andorid Studio lass 'FlutterLocationService' 不是抽象的,并且没有实现抽象成员 public Abstract fun onRequestPermissionsResult

Emi*_*zun 6 android android-location executionexception flutter

不知何故,构建崩溃并出现与位置组件相关的奇怪错误,该错误位于“src..\location\FlutterLocationService.kt:”中

这是错误:

e: C:\src\flutter\.pub-cache\hosted\pub.dartlang.org\location-4.3.0\android\src\main\java\com\lyokone\location\FlutterLocationService.kt: (124, 1): Class 'FlutterLocationService' is not abstract and does not implement abstract member public abstract fun onRequestPermissionsResult(p0: Int, p1: Array<(out) String!>, p2: IntArray): Boolean defined in io.flutter.plugin.common.PluginRegistry.RequestPermissionsResultListener
Run Code Online (Sandbox Code Playgroud)

小智 15

这已在新版本中得到修复。将 pubspec.yml 文件中的依赖项更新为

  location: ^4.4.0
Run Code Online (Sandbox Code Playgroud)


Emi*_*zun 10

好吧,我只做了 3 个不同就解决了这个问题。首先,您将在“fun”关键字之前放置“override”。然后删除“Array”这个和“grantResults: IntArray”这个前面的问号。

应该是“数组”?,“grantResults:IntArray?” 像这样把开头的问号删掉就可以了。

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray): Boolean {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && requestCode == REQUEST_PERMISSIONS_REQUEST_CODE && permissions!!.size == 2 &&
            permissions[0] == Manifest.permission.ACCESS_FINE_LOCATION && permissions[1] == Manifest.permission.ACCESS_BACKGROUND_LOCATION) {
        if (grantResults!![0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
            // Permissions granted, background mode can be enabled
            enableBackgroundMode()
            result?.success(1)
            result = null
        } else {
            if (!shouldShowRequestBackgroundPermissionRationale()) {
                result?.error("PERMISSION_DENIED_NEVER_ASK",
                        "Background location permission denied forever - please open app settings", null)
            } else {
                result?.error("PERMISSION_DENIED", "Background location permission denied", null)
            }
            result = null
        }
    }
    return false
}
Run Code Online (Sandbox Code Playgroud)