Plugin project :location_web not found. Please update settings.gradle. How do I fix this?

…衆ロ難τιáo~ 提交于 2021-01-20 15:53:14

问题


I was using the google maps api and location pub,dev package in my android flutter app, and tried to bring up an image using the url from the api. This was the url with some code:

class LocationHelper{
  static String mapviewpointer({double latitude, double longitude}){
    return "https://maps.googleapis.com/maps/api/staticmap?center=$latitude,$longitude&zoom=13&size=600x300&maptype=roadmap&markers=color:pink%7Clabel:C%7C$latitude,$longitude&key=$GOOGLE_API_KEY";
  }
}

it threw the following error message:

Plugin project :location_web not found. Please update settings.gradle;

I'm not sure how to fix this error.

This was the other error I received in my terminal:

I/flutter (21880): Invalid argument(s): No host specified in URI file:///Instance%20of%20'Future%3CString%3E'

The Area in which I get the error message above is here in my code:

Future <String> _getUserLocation() async{
  final locData = await Location().getLocation();
  final staticMapUrl = LocationHelper.mapviewpointer(
    latitude: locData.latitude, 
    longitude: locData.longitude,
    );
    return staticMapUrl;
}

final mapview = _getUserLocation();


class NearbyScreen extends StatelessWidget {
  @override
  //LocationHelper.mapviewpointer(latitude: )
  
  Widget build(BuildContext context) {
    return  Column(
            children: <Widget>[
              Container(height:170, width: double.infinity,
              child:Image.network(mapview.toString())
              ),
              Text("hello"),
            ],
          );
  }
}

Does it have something to do with the fact that I am returning a Future<String> instead of just a string in my _getUserlocation function? How could I fix this?


回答1:


Use the following settings.gradle:

include ':app'

def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()

def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
    pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}

plugins.each { name, path ->
    def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
    include ":$name"
    project(":$name").projectDir = pluginDirectory
}

This will create a .flutter-plugin file which will have the plugin and its path.




回答2:


I had the same issue and following @Peter Haddad answer, I copy and replaced the code in settings.gradle (all of it) and I had errors resolving symbol for properties and file.

TO FIX IT: go to Tools -> Flutter -> Open for editing in Android Studio

In the Android Studio window go to File -> Invalidate Cache and Restart

This seemed to fix it for me.




回答3:


add in your flutter app -> android -> settings.gradle

def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()

def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
    pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}

plugins.each { name, path ->
    def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
    include ":$name"
    project(":$name").projectDir = pluginDirectory
}

as seen here

more info about the issue here




回答4:


Delete ProjectName/Build folder it has resolved issue for me.




回答5:


Fix for users having facebook flipper installed

I would have added this as a comment, but let me post it as an answer to have proper code formatting.

If you have facebook's flipper installed, with the relative flutter_flipperkit plugin, then your settings.gradle should be already modified.

To use the fix suggested by @Peter Haddad & @Paulo Belo, you will need to keep flipper's plugin loading and add the other condition:

plugins.each { name, path ->
    def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
    if (name == 'flutter_flipperkit') {
        // flipper loading
        include ':flipper-no-op'
        project(':flipper-no-op').projectDir = new File(pluginDirectory, 'flipper-no-op')
    }
    else {
        // location_web not found fix
        include ":$name"
        project(":$name").projectDir = pluginDirectory
    }
}

Hope this helps somebody.



来源:https://stackoverflow.com/questions/62348554/plugin-project-location-web-not-found-please-update-settings-gradle-how-do-i

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