类型不匹配:推断出的类型为 PluginRegistry?但预期为 FlutterEngine。

8

我希望使用Flutter Workmanager进行工作,我已经在我的 .kt 文件中进行了如下配置:

package com.example.mybackprocess

import be.tramckrijte.workmanager.WorkmanagerPlugin
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugins.GeneratedPluginRegistrant

class App : FlutterApplication(), PluginRegistry.PluginRegistrantCallback {
    override fun onCreate() {
        super.onCreate()
        WorkmanagerPlugin.setPluginRegistrantCallback(this)
    }

    override fun registerWith(reg: PluginRegistry?) {
        GeneratedPluginRegistrant.registerWith(reg)
    }
}

我已经将 android:name 更改为

android:name=".App"

但是它给我这个错误:

在调试模式下启动G3212上的lib\main.dart... e:E:\mybackprocess\android\app\src\main\kotlin\com\example\mybackprocess\MainActivity.kt: (15, 48):类型不匹配:推断类型为PluginRegistry?,但FlutterEngine被期望

失败:异常构建。*出了什么问题:执行任务':app:compileDebugKotlin'失败。编译错误,请参见日志以获取更多详细信息

尝试:运行--stacktrace选项以获取堆栈跟踪。运行--info或--debug选项以获取更多日志输出。运行--scan以获取完整洞察力。在https://help.gradle.org 上获取更多帮助

BUILD FAILED in 55s Gradle任务assembleDebug退出码1失败了 Exited (sigterm)

有人可以帮帮我吗?


1
有任何答案吗?我仍然面临这个问题。 - Djamila Jada
6个回答

6

您可以通过替换应用程序.kt中的以下方法来解决此问题。

override fun registerWith(registry: PluginRegistry?) {
    registry?.registrarFor("com.iotecksolutions.background_location_fetch.BackgroundLocationFetchPlugin");
}

注意:将 com.iotecksolutions.background_location_fetch.BackgroundLocationFetchPlugin 替换为您的插件名称。

2

请将MainActivity.kt替换为以下内容:

import android.os.Bundle
import io.flutter.app.FlutterActivity
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity : FlutterActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        GeneratedPluginRegistrant.registerWith(this)
    }
}

2
我使用以下代码来解决错误: GeneratedPluginRegistrant.registerWith(FlutterEngine(applicationContext))

0

前往以下路径中的 (JitsiMeetPlugin.kt) 文件: android\src\main\kotlin\com\gunschu\jitsi_meet
JitsiMeetPlugin.kt

搜索以下行并将 (?) 添加到 Activity 中

constructor(activity: Activity) : this() {
        this.activity = activity
    }

并将其编辑为:

constructor(activity: Activity?) : this() {
        this.activity = activity
}

这对我来说很有效,希望对你有所帮助


0
在 AndroidManifest 中的关闭标签之前添加此标记,如下所示,然后您就可以开始了。
...
 <meta-data
        android:name="flutterEmbedding"
        android:value="2" />
</application>

0
MainActivity.kt 中替换为以下内容:
import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity() {
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接