Comment puis-je obtenir la position actuelle sur un appareil Android à l'aide du flutter. J'ai essayé à la fois Location et < a href = "https://pub.dartlang.org/packages/geolocator" rel = "nofollow noreferrer"> Plugins GeoLocator le GeoLocator 3.0.0 affiche cette erreur lors du débogage: < pre> XXX
ÉCHEC: la construction a échoué avec une exception.
La dépendance Android 'android.arch.lifecycle: runtime' a une version différente pour le chemin de classe de compilation (1.0.0) et d'exécution (1.1.0). Vous devez définir manuellement la même version via DependencyResolution
Location 2.0.0 génère également une erreur de débogage. Il existe un autre plugin disponible nommé geoLocation mais qui n'est pas compatible avec dart 2.0. Dans une telle situation, comment puis-je obtenir l'emplacement (longitude et latitude) [une fois]? Toute aide serait très appréciée.
4 Réponses :
Il est possible que jusqu'à présent, vous ayez trouvé une solution, mais j'ajoute toujours ceci pour que d'autres puissent obtenir de l'aide
utiliser le géolocalisateur pour obtenir la position actuelle
Dans pubsec.yaml p>
import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; void main() => runApp(MapScreen()); class MapScreen extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: "Map", home: MapActivity(), ); } } class MapActivity extends StatefulWidget { @override _MapActivityState createState() => _MapActivityState(); } class _MapActivityState extends State<MapActivity> { LatLng _center ; Position currentLocation; @override void initState() { // TODO: implement initState super.initState(); getUserLocation(); } Future<Position> locateUser() async { return Geolocator() .getCurrentPosition(desiredAccuracy: LocationAccuracy.high); } getUserLocation() async { currentLocation = await locateUser(); setState(() { _center = LatLng(currentLocation.latitude, currentLocation.longitude); }); print('center $_center'); } }
Dans votre fichier de fléchettes
geolocator: '^2.0.1'
J'espère que cela vous aidera
Merci. J'ai eu ce problème en raison d'un conflit de bibliothèques et la mise à jour de mon projet vers les bibliothèques Android x a résolu l'erreur.
Le plugin geoLocator que j'ai installé utilisait les bibliothèques Android x jetpack alors que mon projet utilisait des bibliothèques de support donc ce conflit était à l'origine du problème et lorsque j'ai mis à jour mon projet pour utiliser les bibliothèques Android x, le problème a été résolu.
Suivez ces étapes pour obtenir la position sur IOS et Android.
géolocalisateur: ^ 4.0.3
dans votre fichier pubspec.yaml sous les dépendances: tag import 'package: geolocator / geolocator.dart';
dans votre fichier de fléchettes où vous devez obtenir l'emplacement Pour IOS, vous devrez ajouter les lignes suivantes dans votre fichier info.plist sous
dans le projet IOS
Fonction pour obtenir la position
void getLocation () async {
Position position = attendre Geolocator ()
.getCurrentPosition (souhaitéAccuracy: LocationAccuracy.high);
imprimer (position);
}
Bravo!
Pour moi, cela échoue toujours. Obtenir cette erreur. E / location_permissions (24439): L'objet de résultat Flutter est nul.
n'obtient toujours pas l'emplacement actuel
Ajoutez le plug-in GeoLocation dans pubsec.yaml
géolocalisateur: ^ 6.0.0
Lancez flutter pub get
Ajoutez des autorisations de localisation pour Android dans app / src / main / AndroidManifest.xml
GoogleMap( // onMapCreated: _onMapCreated, initialCameraPosition: CameraPosition( target: currentPostion, zoom: 10, ), ),
LatLng currentPostion; void _getUserLocation() async { var position = await GeolocatorPlatform.instance .getCurrentPosition(desiredAccuracy: LocationAccuracy.high); setState(() { currentPostion = LatLng(position.latitude, position.longitude); }); }
<key>NSLocationWhenInUseUsageDescription</key> <string>This app needs access to location when open.</string> <key>NSLocationAlwaysUsageDescription</key> <string>This app needs access to location when in the background.</string>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
Le numéro 3 a fonctionné pour moi! je n'en ai essayé qu'un seul avant, pas les 3 en même temps :) ... Merci!
Avez-vous ajouté l'autorisation
à AndroidManifest.xml?
Ouaip. Il n'y a aucun problème avec la permission. J'ai également utilisé le plugin uses_permission pour les appareils Android 6+ pour demander explicitement l'autorisation.