background_locator icon indicating copy to clipboard operation
background_locator copied to clipboard

Unresolved reference

Open ludesert opened this issue 3 years ago • 5 comments

Whenever I try to compile a new version of my app, I get this error :

e: D:...\myapp\Application.kt: (11, 21): Unresolved reference: googleapiavailability e: D:...\myapp\Application.kt: (18, 30): Unresolved reference: setPluginRegistrant e: D:...\myapp\Application.kt: (33, 13): Unresolved reference: GoogleApiAvailabilityPlugin

I did not change the Application.kt file. Everything worked well before and I can't figure out what happened. What I did :

  • update Flutter
  • update some dependencies I saw issue #202 but it did not help.

Note : I tried downgrading dependencies and removing the small changes I made in my app and only got this error :

e: D:...\myapp\Application.kt: (18, 30): Unresolved reference: setPluginRegistrant

Here is my Application.kt file :

`package com.ludesert.myapp

import io.flutter.app.FlutterApplication import io.flutter.plugin.common.PluginRegistry import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback import io.flutter.view.FlutterMain import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin import rekab.app.background_locator.IsolateHolderService import com.baseflow.geolocator.GeolocatorPlugin import com.baseflow.location_permissions.LocationPermissionsPlugin import com.baseflow.googleapiavailability.GoogleApiAvailabilityPlugin import com.tekartik.sqflite.SqflitePlugin

class Application : FlutterApplication(), PluginRegistrantCallback { override fun onCreate() { super.onCreate() IsolateHolderService.setPluginRegistrant(this) FlutterMain.startInitialization(this) }

override fun registerWith(registry: PluginRegistry?) {
    if (!registry!!.hasPlugin("io.flutter.plugins.shared_preferences")) {
        SharedPreferencesPlugin.registerWith(registry!!.registrarFor("io.flutter.plugins.shared_preferences"))
    }
    if (!registry!!.hasPlugin("com.baseflow.geolocator")) {
        GeolocatorPlugin.registerWith(registry!!.registrarFor("com.baseflow.geolocator"))
    }
    if (!registry!!.hasPlugin("com.baseflow.location_permissions")) {
        LocationPermissionsPlugin.registerWith(registry!!.registrarFor("com.baseflow.location_permissions"))
    }
    if (!registry!!.hasPlugin("com.baseflow.google_api_availability")) {
        GoogleApiAvailabilityPlugin.registerWith(registry!!.registrarFor("com.baseflow.google_api_availability"))
    }
    if (!registry!!.hasPlugin("com.tekartik.sqflite")) {
        SqflitePlugin.registerWith(registry!!.registrarFor("com.tekartik.sqflite"))
    }
}

} `

ludesert avatar Apr 24 '21 14:04 ludesert

For the Flutter Android Embedding V2, plugins are registered with the background isolate via reflection so IsolateHolderService.setPluginRegistrant does not need to be called. I'm using SharedPreferences and FirebaseFirestore and it's working all fine.

SandeMK avatar Apr 24 '21 18:04 SandeMK

So with Flutter V2, I don't have to register the plugins manually via Application.kt, thus I don't need it anymore ?

ludesert avatar Apr 24 '21 18:04 ludesert

For the Flutter Android Embedding V2, plugins are registered with the background isolate via reflection so IsolateHolderService.setPluginRegistrant does not need to be called. I'm using SharedPreferences and FirebaseFirestore and it's working all fine.

How should the plugins be registered with flutter V2 ? The wiki does not seem to be up to date considering what you say and I'm not sure how to do. Thanks

ludesert avatar Apr 28 '21 09:04 ludesert

no-one ?

ludesert avatar May 18 '21 06:05 ludesert

@ludesert I removed this line IsolateHolderService.setPluginRegistrant since the method setPluginRegistrant is not existing anymore. So far, everything is working fine ( I am using it with pathprovider ) I think this wiki is not updated

@mehdok can you please confirm if IsolateHolderService.setPluginRegistrant should not be used? Thank you!

steinmetz avatar Jul 07 '21 14:07 steinmetz