Type mismatch: inferred type is PluginRegistry? but FlutterEngine was expected

心已入冬 提交于 2021-02-19 00:38:28

问题


I want to work with Flutter Workmanager, I did the cited configuration in my .kt like this:

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)
    }
}

and I have changed android:name to

android:name=".App"

but it gives me this error:

Launching lib\main.dart on G3212 in debug mode... e:E:\mybackprocess\android\app\src\main\kotlin\com\example\mybackprocess\MainActivity.kt: (15, 48): Type mismatch: inferred type is PluginRegistry? but FlutterEngine was expected

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 55s Gradle task assembleDebug failed with exit code 1 Exited (sigterm)

Can someone please help me?


回答1:


you can fix the issue by replacing the following method in your application.kt

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

Note: Replace com.iotecksolutions.background_location_fetch.BackgroundLocationFetchPlugin with your plugin name.




回答2:


Replace the MainActivity.kt with:

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)
    }
}



回答3:


I used the following code to fix the error GeneratedPluginRegistrant.registerWith(FlutterEngine(applicationContext))




回答4:


app this tag before closing tag in AndroidManifest like below and you are good to go

...
 <meta-data
        android:name="flutterEmbedding"
        android:value="2" />
</application>


来源:https://stackoverflow.com/questions/59437284/type-mismatch-inferred-type-is-pluginregistry-but-flutterengine-was-expected

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!