bglocation.dart 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import 'package:flutter/material.dart';
  2. import 'package:background_location/background_location.dart';
  3. import 'package:flutter/foundation.dart';
  4. class BgLocation extends StatefulWidget {
  5. static const routeName = 'bg-location';
  6. const BgLocation({super.key});
  7. @override
  8. State<BgLocation> createState() => _BgLocationState();
  9. }
  10. class _BgLocationState extends State<BgLocation> {
  11. String latitude = 'waiting...';
  12. String longitude = 'waiting...';
  13. String altitude = 'waiting...';
  14. String accuracy = 'waiting...';
  15. String bearing = 'waiting...';
  16. String speed = 'waiting...';
  17. String time = 'waiting...';
  18. @override
  19. void initState() {
  20. super.initState();
  21. }
  22. @override
  23. Widget build(BuildContext context) {
  24. return Scaffold(
  25. appBar: AppBar(
  26. title: const Text('Background Location Service'),
  27. ),
  28. body: Center(
  29. child: ListView(
  30. children: <Widget>[
  31. locationData('Latitude: $latitude'),
  32. locationData('Longitude: $longitude'),
  33. locationData('Altitude: $altitude'),
  34. locationData('Accuracy: $accuracy'),
  35. locationData('Bearing: $bearing'),
  36. locationData('Speed: $speed'),
  37. locationData('Time: $time'),
  38. ElevatedButton(
  39. onPressed: () async {
  40. await BackgroundLocation.setAndroidNotification(
  41. title: 'Background service is running',
  42. message: 'Background location in progress',
  43. icon: '@mipmap/ic_launcher',
  44. );
  45. await BackgroundLocation.setAndroidConfiguration(60000);
  46. await BackgroundLocation.startLocationService(
  47. distanceFilter: 20);
  48. BackgroundLocation.getLocationUpdates((location) {
  49. setState(() {
  50. latitude = location.latitude.toString();
  51. longitude = location.longitude.toString();
  52. accuracy = location.accuracy.toString();
  53. altitude = location.altitude.toString();
  54. bearing = location.bearing.toString();
  55. speed = location.speed.toString();
  56. time = DateTime.fromMillisecondsSinceEpoch(
  57. location.time!.toInt())
  58. .toString();
  59. });
  60. if (kDebugMode) {
  61. print('''\n
  62. Latitude: $latitude
  63. Longitude: $longitude
  64. Altitude: $altitude
  65. Accuracy: $accuracy
  66. Bearing: $bearing
  67. Speed: $speed
  68. Time: $time
  69. ''');
  70. }
  71. });
  72. },
  73. child: const Text('Start Location Service')),
  74. ElevatedButton(
  75. onPressed: () {
  76. BackgroundLocation.stopLocationService();
  77. },
  78. child: const Text('Stop Location Service')),
  79. ElevatedButton(
  80. onPressed: () {
  81. getCurrentLocation();
  82. },
  83. child: const Text('Get Current Location')),
  84. ],
  85. ),
  86. ),
  87. );
  88. }
  89. Widget locationData(String data) {
  90. return Text(
  91. data,
  92. style: const TextStyle(
  93. fontWeight: FontWeight.bold,
  94. fontSize: 18,
  95. ),
  96. textAlign: TextAlign.center,
  97. );
  98. }
  99. void getCurrentLocation() {
  100. BackgroundLocation().getCurrentLocation().then((location) {
  101. if (kDebugMode) {
  102. print('This is current Location ${location.toMap()}');
  103. }
  104. });
  105. }
  106. @override
  107. void dispose() {
  108. BackgroundLocation.stopLocationService();
  109. super.dispose();
  110. }
  111. }