vk_location_sharing 0.0.1 copy "vk_location_sharing: ^0.0.1" to clipboard
vk_location_sharing: ^0.0.1 copied to clipboard

discontinued
PlatformAndroidiOS

A Flutter package for implementing location sharing with foreground streams and periodic background updates.

vk_location_sharing #

A powerful Flutter package to implement location sharing with both foreground streams and background updates. It provides a unified API to handle permissions and location tracking with ease.

Features #

  • Foreground Location Stream: Real-time location updates using the geolocator package.
  • Background Location Updates: Periodic background location tracking using the workmanager package.
  • Configurable Accuracy: Easily control LocationAccuracy and distanceFilter.
  • Permission Handling: Built-in logic to request and verify location permissions for both foreground and background usage.
  • Unified API: A single class VkLocationSharing to manage the entire lifecycle of location sharing.

Getting Started #

Add vk_location_sharing to your pubspec.yaml dependencies.

Platform Setup #

iOS

Add the following keys to your Info.plist file:

  • NSLocationWhenInUseUsageDescription: Explain why you need location when in use.
  • NSLocationAlwaysAndWhenInUseUsageDescription: Explain why you need location always.
  • UIBackgroundModes: Add location and fetch to enable background updates.

Android

Add the following permissions to your AndroidManifest.xml:

  • android.permission.ACCESS_FINE_LOCATION
  • android.permission.ACCESS_COARSE_LOCATION
  • android.permission.ACCESS_BACKGROUND_LOCATION (Required for background sharing)

Usage #

import 'package:vk_location_sharing/vk_location_sharing.dart';

final vkLocation = VkLocationSharing();

// 1. Initialise background services (if using background sharing)
await vkLocation.initializeBackground();

// 2. Start foreground sharing
final stream = await vkLocation.startForegroundSharing(
  accuracy: LocationAccuracy.best,
  distanceFilter: 10,
  onLocationUpdate: (position) {
    print("New position: ${position.latitude}, ${position.longitude}");
  },
);

// 3. Start background sharing (periodic updates)
await vkLocation.startBackgroundSharing(
  frequency: Duration(minutes: 15),
);

// 4. Stop sharing
await vkLocation.stopForegroundSharing();
await vkLocation.stopBackgroundSharing();

Background Tracking Accuracy #

Note

Background updates are handled via Workmanager. The minimum frequency is 15 minutes (defined by Android/iOS). For near real-time background tracking, consider using a dedicated foreground service (not currently included in this package).

API Documentation #

  • startForegroundSharing: Returns a stream of Position and handles permission requests.
  • startBackgroundSharing: Registers a periodic task that runs even when the app is in the background.
  • stopForegroundSharing / stopBackgroundSharing: Stops the respective tracking services.
  • handlePermission: Programmatically check/request required permissions.
  • getCurrentLocation: Fetches the current device location once.

Optimization #

The package uses LocationSettings to optimize battery usage. By setting the distanceFilter, you can significantly reduce the number of updates emitted when the device is stationary or moving slowly.

Example #

Check out the example directory for a full demonstration of the package including a UI to start/stop sharing.

0
likes
150
points
11
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter package for implementing location sharing with foreground streams and periodic background updates.

Homepage

License

MIT (license)

Dependencies

flutter, geolocator, workmanager

More

Packages that depend on vk_location_sharing