如何修复此 "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 的方法。
这里有两个解决方案。
添加 PluginRegistrantCallback 方法的实现 class
删除已实施的 PluginRegistrantCallback class。
我正在尝试 运行 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 的方法。
这里有两个解决方案。
添加 PluginRegistrantCallback 方法的实现 class
删除已实施的 PluginRegistrantCallback class。