如何修复此 "class 'application' not abstract" 错误?

How do I fix this "class 'application' not abstract" error?

我正在尝试 运行 example here。它很颤抖,我正试图在 Android 模拟器上 运行 它。我收到一个错误:

> Task :app:compileDebugKotlin FAILED
[        ] e: /Users/user/flutter-samples/packages/stream_chat_v1/android/app/src/main/kotlin/com/example/example/Application.kt: (10, 1): Class 'Application' is not
abstract and does not implement abstract member public abstract fun registerWith(p0: PluginRegistry): Unit defined in
io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
[   +1 ms] e: /Users/user/flutter-samples/packages/stream_chat_v1/android/app/src/main/kotlin/com/example/example/Application.kt: (15, 5): 'registerWith' overrides
nothing
[  +95 ms] FAILURE: Build failed with an exception.
[        ] * What went wrong:
[        ] Execution failed for task ':app:compileDebugKotlin'.
[        ] > Compilation error. See log for more details
[        ] * Try:
[        ] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
[        ] * Get more help at https://help.gradle.org
[        ] BUILD FAILED in 1m 57s

这是 Application.kt 文件:

package com.example.example

import com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin
import io.flutter.plugins.pathprovider.PathProviderPlugin

class Application : FlutterApplication(), PluginRegistrantCallback {
    override fun onCreate() {
        super.onCreate()
    }

    override fun registerWith(registry: PluginRegistry?) {
        PathProviderPlugin.registerWith(registry?.registrarFor(
                "io.flutter.plugins.pathprovider.PathProviderPlugin"))
        SharedPreferencesPlugin.registerWith(registry?.registrarFor(
                "io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin"))
        FlutterLocalNotificationsPlugin.registerWith(registry?.registrarFor(
                "com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin"))
    }
}

我尝试查看其他类似的答案,但它们都非常针对那些作者使用的函数和代码。我该怎么办?

发生的事情是您有一个摘要 class PluginRegistrantCallback,您的应用程序 class 从中扩展。这个抽象class有一个方法public abstract fun registerWith(p0: PluginRegistry): Unit,你没有在Application中实现(仔细看,不一样)。你可以做些什么来解决这个问题:

  • 如果您从不使用此抽象函数,请尽可能将其从父函数中删除 class。
  • 实现上述函数,但函数体为空。

这应该可以解决问题。我不知道那个 PluginRegistrantCallback 是不是你做的,如果是的话,你可能想把你的 override fun registerWith(registry: PluginRegistry?) 编辑成 override fun registerWith(registry: PluginRegistry),这应该也能解决问题,具体取决于PluginRegistrantCallback已定义(有哪些抽象方法)。

您应该记住,包含抽象方法的抽象 class 意味着每次从它扩展 class 时,您都必须在其中定义抽象方法。

您已经实现了 PluginRegistrantCallback 但没有实现这个 class 的方法。

这里有两个解决方案。

  1. 添加 PluginRegistrantCallback 方法的实现 class

  2. 删除已实施的 PluginRegistrantCallback class。