How can i get current location on android device using flutter. I have tried both Location and GeoLocator plugins the GeoLocator 3.0.0 shows this error on debuging:
Launching lib\main.dart on Android SDK built for x86 in debug mode...
FAILURE: Build failed with an exception.
Android dependency 'android.arch.lifecycle:runtime' has different version for the compile (1.0.0) and runtime (1.1.0) classpath. You should manually set the same version via DependencyResolution
Location 2.0.0 also throws an error on debugging. There is another plugin available named geoLocation but that is not compatible with dart 2.0. In such a situation how can i get location (longitude and latitude)[once]? Any help would be highly appreciated.
Follow these steps to get location in both IOS and Android.
geolocator: ^4.0.3
in your pubspec.yaml file below dependencies: tagimport 'package:geolocator/geolocator.dart';
in your dart file where you need to get location
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
For IOS you'll need to add following lines in your info.plist file under <dict>
in IOS project
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
Function to get location
void getLocation() async { Position position = await Geolocator .getCurrentPosition(desiredAccuracy: LocationAccuracy.high); print(position); }
Cheers!
Add GeoLocation Plugin in pubsec.yamlgeolocator: ^6.0.0
Run flutter pub get
Add location permissions for Android in app/src/main/AndroidManifest.xml
<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" />
<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>
LatLng currentPostion;
void _getUserLocation() async {
var position = await GeolocatorPlatform.instance
.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
setState(() {
currentPostion = LatLng(position.latitude, position.longitude);
});
}
GoogleMap(
// onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: currentPostion,
zoom: 10,
),
),
It may be possible that uptil now you might have found a solution but still I am adding this so that others can get help
use geolocator for getting current location
In pubsec.yaml
geolocator: '^2.0.1'
In your dart file
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');
}
}
Hope this helps
The geoLocator plugin that I installed was using Android x jetpack libraries while my project was using support libraries so this conflict was causing the problem and when I updated my project to use Android x libraries the problem was resolved.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With