geo_background 0.0.6 copy "geo_background: ^0.0.6" to clipboard
geo_background: ^0.0.6 copied to clipboard

This Flutter package provides a simple and effective solution for tracking background location with foreground notifications.

example/lib/main.dart

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';

import 'TrackingProvider.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  requestPermission();
  runApp(
    ChangeNotifierProvider(
      create: (_) => TrackingProvider(),
      child: const MyApp(),
    ),
  );
}


Future<void> requestPermission() async {
  var status = await Permission.location.status;
  if (status.isDenied) {
    await Permission.location.request();
  }
  if (await Permission.location.isGranted) {
    var backgroundStatus = await Permission.locationAlways.status;
    if (backgroundStatus.isDenied) {
      await Permission.locationAlways.request();
    }
  }

  var batteryOptimizationStatus =
  await Permission.ignoreBatteryOptimizations.status;
  if (batteryOptimizationStatus.isDenied) {
    await Permission.ignoreBatteryOptimizations.request();
  }

  var notificationStatus = await Permission.notification.status;
  if (notificationStatus.isDenied) {
    await Permission.notification.request();
  }
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return ChangeNotifierProvider(
      create: (_) => TrackingProvider(),
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
          useMaterial3: true,
        ),
        debugShowCheckedModeBanner: false,
        home: const MyHomePage(),
      ),
    );
  }
}


class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Location Notify BG',style: TextStyle(fontWeight: FontWeight.bold),),
        centerTitle: true,
        backgroundColor: Colors.blueGrey.shade100,
      ),
      body: Consumer<TrackingProvider>(
        builder: (context, trackingProvider, child) {
          return Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text(
                  'Distance: ${trackingProvider.distance.toStringAsFixed(2)} km',
                  style: const TextStyle(fontSize: 20),
                ),
                const SizedBox(height: 10),
                Text(
                  'Speed: ${trackingProvider.speed.toStringAsFixed(2)} km/h',
                  style: const TextStyle(fontSize: 20),
                ),
                const SizedBox(height: 20),
                ElevatedButton(
                  onPressed: trackingProvider.isTracking
                      ? trackingProvider.stopTracking
                      : trackingProvider.startTracking,
                  child: Text(
                    trackingProvider.isTracking ? 'Stop Tracking' : 'Start Tracking',
                    style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white),
                  ),
                  style: ElevatedButton.styleFrom(
                    backgroundColor: Colors.grey, // Background color
                  ),
                ),


              ],
            ),
          );
        },
      ),
    );
  }
}
1
likes
155
points
61
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

This Flutter package provides a simple and effective solution for tracking background location with foreground notifications.

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter

More

Packages that depend on geo_background