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

A Flutter plugin for tracking location in both foreground and background modes, similar to flutter_background_geolocation.

Background Location Tracker #

Flutter kitabxanası - həm foreground, həm də background rejimdə location tracking üçün.

Xüsusiyyətlər #

  • ✅ Foreground və background location tracking
  • ✅ Yüksək dəqiqlik və konfiqurasiya imkanları
  • ✅ Permission idarəetməsi
  • ✅ Real-time location stream
  • ✅ Distance və bearing hesablamaları
  • ✅ Mock location filtrasiyası
  • ✅ Android və iOS dəstəyi
  • ✅ Notification dəstəyi (Android)

Quraşdırma #

pubspec.yaml faylınıza əlavə edin:

dependencies:
  background_location_tracker:
    path: ../background_location_tracker  # və ya pub.dev-dən

Platform Konfiqurasiyası #

Android #

android/app/src/main/AndroidManifest.xml faylına əlavə edin:

<manifest>
    <!-- Foreground location permission -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    
    <!-- Background location permission (Android 10+) -->
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
    
    <!-- Foreground service permission (Android 9+) -->
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />
    
    <application>
        ...
    </application>
</manifest>

iOS #

ios/Runner/Info.plist faylına əlavə edin:

<dict>
    <!-- Foreground location permission -->
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Bu tətbiq sizin məkanınızı izləmək üçün icazə tələb edir</string>
    
    <!-- Background location permission -->
    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
    <string>Bu tətbiq arxa planda məkanınızı izləmək üçün icazə tələb edir</string>
    
    <key>NSLocationAlwaysUsageDescription</key>
    <string>Bu tətbiq arxa planda məkanınızı izləmək üçün icazə tələb edir</string>
    
    <!-- Background modes -->
    <key>UIBackgroundModes</key>
    <array>
        <string>location</string>
    </array>
</dict>

İstifadə #

1. Sadə istifadə #

import 'package:background_location_tracker/background_location_tracker_library.dart';

final locationTracker = BackgroundLocationTracker();

// Permission yoxla
final permission = await locationTracker.checkPermission();

// Permission tələb et
if (!permission.isGranted) {
  await locationTracker.requestPermission();
}

// Cari məkanı al
final location = await locationTracker.getCurrentLocation();
print('Lat: ${location?.latitude}, Lng: ${location?.longitude}');

2. Real-time tracking #

// Location stream-ə qoşul
locationTracker.onLocationUpdate.listen((location) {
  print('Yeni məkan: ${location.latitude}, ${location.longitude}');
  print('Dəqiqlik: ${location.accuracy}m');
  print('Sürət: ${location.speed}m/s');
});

// Error stream-ə qoşul
locationTracker.onError.listen((error) {
  print('Xəta: $error');
});

// Tracking başlat
await locationTracker.startTracking();

// Tracking dayandır
await locationTracker.stopTracking();

3. Konfiqurasiya ilə tracking #

final settings = LocationSettings(
  accuracy: LocationAccuracy.high,
  distanceFilter: 10.0, // 10 metr
  timeInterval: 5000, // 5 saniyə
  enableBackgroundTracking: true,
  showBackgroundNotification: true,
  notificationTitle: 'Məkan İzləmə',
  notificationText: 'Məkanınız izlənilir',
  allowMockLocations: false,
);

await locationTracker.startTracking(settings);

4. Background tracking #

// Background permission tələb et
final permission = await locationTracker.requestPermission(
  requestBackgroundPermission: true,
);

if (permission == LocationPermissionStatus.always) {
  // Background tracking başlat
  final settings = LocationSettings(
    accuracy: LocationAccuracy.high,
    distanceFilter: 10.0,
    enableBackgroundTracking: true,
    showBackgroundNotification: true,
  );
  
  await locationTracker.startTracking(settings);
}

5. Distance hesablama #

final distance = locationTracker.getDistanceBetween(
  40.4093, // start lat
  49.8671, // start lng
  40.4105, // end lat
  49.8680, // end lng
);
print('Məsafə: ${distance}m');

final bearing = locationTracker.getBearingBetween(
  40.4093, 49.8671,
  40.4105, 49.8680,
);
print('İstiqamət: ${bearing}°');

6. Utility metodlar #

// Location service aktivdir?
final isEnabled = await locationTracker.isLocationServiceEnabled();

// App settings-i aç
await locationTracker.openAppSettings();

// Location settings-i aç
await locationTracker.openLocationSettings();

// Son məkan
final lastLocation = locationTracker.lastLocation;

// Tracking aktivdir?
final isTracking = locationTracker.isTracking;

LocationData Model #

class LocationData {
  final double latitude;
  final double longitude;
  final double accuracy;
  final double? altitude;
  final double? speed;
  final double? speedAccuracy;
  final double? heading;
  final DateTime timestamp;
  final bool isMocked;
}

LocationSettings Model #

class LocationSettings {
  final LocationAccuracy accuracy;
  final double distanceFilter;
  final int? timeInterval;
  final bool enableBackgroundTracking;
  final bool showBackgroundNotification;
  final String? notificationTitle;
  final String? notificationText;
  final bool pauseLocationUpdatesAutomatically;
  final bool allowMockLocations;
}

LocationAccuracy Enum #

enum LocationAccuracy {
  lowest,              // Ən aşağı dəqiqlik
  low,                 // Aşağı dəqiqlik (~10km)
  medium,              // Orta dəqiqlik (~100m)
  high,                // Yüksək dəqiqlik (~10m)
  best,                // Ən yaxşı dəqiqlik (GPS)
  bestForNavigation,   // Naviqasiya üçün ən yaxşı
}

LocationPermissionStatus Enum #

enum LocationPermissionStatus {
  denied,              // İmtina edilib
  deniedForever,       // Həmişəlik imtina edilib
  whileInUse,          // Yalnız istifadə zamanı
  always,              // Həmişə (background daxil)
  notDetermined,       // Müəyyən edilməyib
}

Məsləhətlər #

  1. Background tracking üçün: Android 10+ və iOS-da background permission ayrıca tələb edilməlidir
  2. Battery optimization: distanceFiltertimeInterval parametrlərini düzgün seçin
  3. Mock location: Production-da allowMockLocations: false istifadə edin
  4. Notification: Android-də background tracking üçün notification məcburidir
  5. Dispose: Widget dispose olduqda locationTracker.dispose() çağırın

Lisenziya #

MIT License

Müəllif #

Fermayi Hesenov

1
likes
0
points
54
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin for tracking location in both foreground and background modes, similar to flutter_background_geolocation.

License

unknown (license)

Dependencies

flutter, geolocator, permission_handler, plugin_platform_interface

More

Packages that depend on flutter_map_background_location

Packages that implement flutter_map_background_location