17
votes

Projet de plug-in: location_web introuvable. Veuillez mettre à jour settings.gradle. Comment puis-je réparer ça?

J'utilisais l'api de google maps et l'emplacement pub, le package de développement dans mon application Android Flutter, et j'ai essayé d'afficher une image en utilisant l'URL de l'API. C'était l'URL avec du 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"),
            ],
          );
  }
}

il a jeté le message d'erreur suivant:

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

Je ne sais pas comment corriger cette erreur.

C'était l'autre erreur que j'ai reçue dans mon terminal:

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

La zone dans laquelle je reçois le message d'erreur ci-dessus est ici dans mon 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";
  }
}

Cela a-t-il quelque chose à voir avec le fait que je renvoie un Future<String> au lieu d'une simple string dans ma fonction _getUserlocation ? Comment pourrais-je résoudre ce problème?


1 commentaires

Pourriez-vous montrer votre pubspec.yaml ?


3 Réponses :


35
votes

Utilisez les settings.gradle suivants:

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
}

Cela créera un fichier .flutter-plugin qui aura le plugin et son chemin.


7 commentaires

Merci beaucoup! Cependant, j'obtiens toujours ce message d'erreur en essayant d'afficher l'image de la carte: "I / flutter (10600): L'argumentError suivant a été lancé pour résoudre un codec d'image: I / flutter (10600): Argument (s) non valide (s): Aucun hôte spécifié dans Fichier URI: /// Instance% 20of% 20'Future% 3CString% 3E '"Quel serait le problème ici?


Où obtenez-vous cette erreur sur quelle ligne de votre code? Ou après quoi?


J'ai mis à jour la question avec plus d'informations, j'espère que cela vous aidera! Merci encore


getUserLocation() renvoie un Future<String> tandis que Image.network besoin d'une URL. Par conséquent, la meilleure chose est d'utiliser FutureBuilder et à l'intérieur d'appeler Image.network image


Pourquoi cette erreur se produit-elle? Que fait ce script?


Je n'ai pas essayé ce plugin depuis un moment, essayez d'utiliser la dernière version, cela ne devrait plus arriver, pour savoir pourquoi cela se produit, vérifiez celui-ci ici stackoverflow.com/questions/61732409/... @Ced


C'était l'ancien settings.gradle lorsque vous créez une application Flutter, puis Flutter a changé les settings.gradle et certains plugins avaient besoin de l'ancien script pour fonctionner correctement, c'est pourquoi vous obtenez cette erreur.



3
votes

J'ai eu le même problème et après la réponse de @Peter Haddad, j'ai copié et remplacé le code dans settings.gradle (tout cela) et j'ai eu des erreurs de résolution du symbole pour les propriétés et le fichier.

POUR LE RÉPARER: allez dans Outils -> Flutter -> Ouvrir pour édition dans Android Studio

Dans la fenêtre Android Studio, allez dans Fichier -> Invalider le cache et redémarrer

Cela a semblé résoudre le problème pour moi.


1 commentaires

Il n'est pas nécessaire d'ouvrir Android Studio pour nettoyer le cache, utilisez ce qui suit dans le terminal: flutter clean



0
votes

ajoutez votre application Flutter -> 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
}

comme vu ici

plus d'informations sur le problème ici


0 commentaires