Location In Flutter
Tags: Flutter Package, Google Maps, Flutter, Location, Dart

Nowadays, working with a location in the app is very common. Using the Flutter Location plugin, it’s effortless to get the user’s location on Android and iOS devices.

In this article, we’ll show how to get the user’s current location and display the address. We will also implement a demo using the location package.

Table of Contents :

Introduction Setup Code Implementation Code File Conclusion

Introduction :

Sometimes to provide the best possible user experience, you need to know the GPS location of their device. The Location package allows you to obtain the current geographic location of the device and listen for changes. You can use this data to display maps, calculate distances, determine the direction the device is facing, and more!

Setup :

Step 1: Add the dependency

Start by adding the dependency to the pubspec.yml file

dependencies:

location: ^3.0.0

Android: all the dependencies are automatically added to your project.

IOS:

Modify the Info.plist file to add the permission

NSLocationWhenInUseUsageDescription

NSLocationAlwaysUsageDescription

It can be found inside <your-project-root-directory>/ios/Runner/ folder

Step 2: To get the user’s location import the library into MyLocation.dart

import 'package:location/location.dart';

Implement Code :

Create variables for storing address and location in the MyLocation.dart class and showing in the google map. On location change, we will display it on the screen.

LocationData _currentPosition;

String _address,_dateTime;

Now we get the location, In this function, we will get the coordinates of the user

Now we are showing coordinates on the screen.

Get address from the coordinates

Display address and coordinates

Wherever you want to display it on the screen

On Google map,

In these snippets, we are using google map and text to display the user’s coordinates and address.

Code File

import 'dart:async';



import 'package:flutter/material.dart';

import 'package:location/location.dart';

import 'package:geocoder/geocoder.dart';

import 'package:intl/intl.dart';

import 'package:google_maps_flutter/google_maps_flutter.dart';





class MyLocation extends StatefulWidget {

@override

_MyLocationState createState() => _MyLocationState();

}





class _MyLocationState extends State<MyLocation> {

LocationData _currentPosition;

String _address,_dateTime;

GoogleMapController mapController;

Marker marker;

Location location = Location();



GoogleMapController _controller;

LatLng _initialcameraposition = LatLng(0.5937, 0.9629);



@override

void initState() {

// TODO: implement initState

super.initState();

getLoc();



}



void _onMapCreated(GoogleMapController _cntlr)

{

_controller = _controller;

location.onLocationChanged.listen((l) {

_controller.animateCamera(

CameraUpdate.newCameraPosition(

CameraPosition(target: LatLng(l.latitude, l.longitude),zoom: 15),

),

);

});

}



@override

Widget build(BuildContext context) {

return Scaffold(



body: Container(

decoration: BoxDecoration(

image: DecorationImage(

image: AssetImage('assets/images/bg.jpg'), fit: BoxFit.cover),

),

height: MediaQuery.of(context).size.height,

width: MediaQuery.of(context).size.width,

child: SafeArea(

child: Container(

color: Colors.blueGrey.withOpacity(.8),

child: Center(

child: Column(

children: [

Container(

height: MediaQuery.of(context).size.height/2.5,

width: MediaQuery.of(context).size.width,

child: GoogleMap(

initialCameraPosition: CameraPosition(target: _initialcameraposition,

zoom: 15),

mapType: MapType.normal,

onMapCreated: _onMapCreated,

myLocationEnabled: true,

),

),

SizedBox(

height: 3,

),

if (_dateTime != null)

Text(

"Date/Time: $_dateTime",

style: TextStyle(

fontSize: 15,

color: Colors.white,

),

),



SizedBox(

height: 3,

),

if (_currentPosition != null)

Text(

"Latitude: ${_currentPosition.latitude}, Longitude: ${_currentPosition.longitude}",

style: TextStyle(

fontSize: 22,

color: Colors.white,

fontWeight: FontWeight.bold),

),

SizedBox(

height: 3,

),

if (_address != null)

Text(

"Address: $_address",

style: TextStyle(

fontSize: 16,

color: Colors.white,

),

),

SizedBox(

height: 3,

),

],

),

),

),

),

),



);

}





getLoc() async{

bool _serviceEnabled;

PermissionStatus _permissionGranted;



_serviceEnabled = await location.serviceEnabled();

if (!_serviceEnabled) {

_serviceEnabled = await location.requestService();

if (!_serviceEnabled) {

return;

}

}



_permissionGranted = await location.hasPermission();

if (_permissionGranted == PermissionStatus.denied) {

_permissionGranted = await location.requestPermission();

if (_permissionGranted != PermissionStatus.granted) {

return;

}

}



_currentPosition = await location.getLocation();

_initialcameraposition = LatLng(_currentPosition.latitude,_currentPosition.longitude);

location.onLocationChanged.listen((LocationData currentLocation) {

print("${currentLocation.longitude} : ${currentLocation.longitude}");

setState(() {

_currentPosition = currentLocation;

_initialcameraposition = LatLng(_currentPosition.latitude,_currentPosition.longitude);



DateTime now = DateTime.now();

_dateTime = DateFormat('EEE d MMM kk:mm:ss ').format(now);

_getAddress(_currentPosition.latitude, _currentPosition.longitude)

.then((value) {

setState(() {

_address = "${value.first.addressLine}";

});

});

});

});

}





Future<List<Address>> _getAddress(double lat, double lang) async {

final coordinates = new Coordinates(lat, lang);

List<Address> add =

await Geocoder.local.findAddressesFromCoordinates(coordinates);

return add;

}



}

Conclusion

In this article, I have explained the location package demo, which you can modify and experiment with according to your own. This little introduction was about to get the user’s current location and display it on the map.

I hope this blog will provide you with sufficient information in trying up to get the user’s current location in your flutter projects. We will show to get the user location demo program for working location in your flutter applications. So please try it.

❤ ❤ Thanks for reading this article ❤❤

If I got something wrong? Let me know in the comments. I would love to improve.

Clap 👏 If this article helps you.