0 purchases
user location
user_location #
A plugin for FlutterMap package to handle and plot the current user location
Usage #
Add flutter_map and user_location to your pubspec.yaml :
dependencies:
flutter_map: any
user_location: any # or the latest version on Pub
copied to clipboard
Update your gradle.properties file with this:
android.enableJetifier=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536M
copied to clipboard
Also make sure that you have added those dependencies in your build.gradle:
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
classpath 'com.google.gms:google-services:4.2.0'
}
compileSdkVersion 28
copied to clipboard
Getting Started #
Android #
In order to use this plugin in Android, you have to add this permission in AndroidManifest.xml :
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
copied to clipboard
Permission check for Android 6+ was added.
iOS #
Note: I have not tested the plugin in ios
On iOS you'll need to add the NSLocationWhenInUseUsageDescription to your Info.plist file in order to access the device's location. Simply open your Info.plist file and add the following:
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs access to location when open.</string>
copied to clipboard
If you would like to access the device's location when your App is running in the background, you should also add the NSLocationAlwaysAndWhenInUseUsageDescription (if your App support iOS 10 or earlier you should also add the key NSLocationAlwaysUsageDescription) key to your Info.plist file:
<key>NSLocationAlwaysUsageDescription</key>
<string>This app needs access to location when in the background.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app needs access to location when open and in the background.</string>
copied to clipboard
Installation guide #
Declare and initialize MapController mapController = MapController(); List<Marker> markers = [];
Add UserLocationPlugin() to plugins
Add MarkerLayerOptions and UserLocationOptions in layers
Sample code #
import 'package:flutter/material.dart';
import 'package:user_location/user_location.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:latlong/latlong.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'User Location Plugin Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomePage(),
);
}
}
class HomePage extends StatelessWidget {
// ADD THIS
MapController mapController = MapController();
UserLocationOptions userLocationOptions;
// ADD THIS
List<Marker> markers = [];
@override
Widget build(BuildContext context) {
// You can use the userLocationOptions object to change the properties
// of UserLocationOptions in runtime
userLocationOptions = UserLocationOptions(
context: context,
mapController: mapController,
markers: markers,
);
return Scaffold(
appBar: AppBar(title: Text("User Location Plugin")),
body: FlutterMap(
options: MapOptions(
center: LatLng(0,0),
zoom: 15.0,
plugins: [
// ADD THIS
UserLocationPlugin(),
],
),
layers: [
TileLayerOptions(
urlTemplate: "https://api.tiles.mapbox.com/v4/"
"{id}/{z}/{x}/{y}@2x.png?access_token={accessToken}",
additionalOptions: {
'accessToken': '<access_token>',
'id': 'mapbox.streets',
},
),
// ADD THIS
MarkerLayerOptions(markers: markers),
// ADD THIS
userLocationOptions,
],
// ADD THIS
mapController: mapController,
));
}
}
copied to clipboard
Optional parameters #
markerWidget overrides the default marker widget
onLocationChange is a callback function to get the current location of user. It's uses is defined in the example program.
updateMapLocationOnPositionChange moves the map to the current location of the user if set to true
showMoveToCurrentLocationFloatingActionButton displays a floating action button at the bottom right of the screen which will redirect the user to their current location. You can also pass your own widget as FAB and control the position using options fabBottom and fabRight options.
showHeading is used to control whether or not to show heading in the marker widget
zoomToCurrentLocationOnLoad if true, zooms to the current location of the user with a zoom factor 17
moveToCurrentLocationFloatingActionButton is a widget when passed overrides the default floating action button. Default floating action button code:
Container(
decoration: BoxDecoration(
color: Colors.blueAccent,
borderRadius: BorderRadius.circular(20.0),
boxShadow: [
BoxShadow(color: Colors.grey, blurRadius: 10.0)
]),
child: Icon(
Icons.my_location,
color: Colors.white,
),
)
copied to clipboard
Run the example #
See the example/ folder for a working example app.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.