flutter-geolocator
flutter-geolocator copied to clipboard
[WEB] Firefox mobile (Android) browser changes location from allowed to blocked
🐛 Bug Report
Firefox mobile browser changes location from allowed to blocked when using Geolocator.getPositionStream() or calling Geolocator.getCurrentPosition() too many times and too fast. It seems to work fine if there is delay between Geolocator.getCurrentPosition() calls.
Phone: Galaxy S8 Android: 9
Expected behavior
Firefox shouldn't bloc location when it's allowed when using Geolocator.getPositionStream() .
Reproduction steps
Added button with onPressed: () { _determinePosition(); }: It seemed to work fine if I was pressing slowly but if I was pressing too fast Firefox blocks location. Same happens when using StreamBuilder Geolocator.getPositionStream().
Future<Position> _determinePosition() async {
bool serviceEnabled;
LocationPermission permission;
// Test if location services are enabled.
serviceEnabled = await Geolocator.isLocationServiceEnabled();
if (!serviceEnabled) {
// Location services are not enabled don't continue
// accessing the position and request users of the
// App to enable the location services.
return Future.error('Location services are disabled.');
}
permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
if (permission == LocationPermission.denied) {
// Permissions are denied, next time you could try
// requesting permissions again (this is also where
// Android's shouldShowRequestPermissionRationale
// returned true. According to Android guidelines
// your App should show an explanatory UI now.
return Future.error('Location permissions are denied');
}
}
if (permission == LocationPermission.deniedForever) {
// Permissions are denied forever, handle appropriately.
return Future.error(
'Location permissions are permanently denied, we cannot request permissions.');
}
// When we reach here, permissions are granted and we can
// continue accessing the position of the device.
print("Position: ${await Geolocator.getCurrentPosition()}");
}
Configuration
Version: 8.2.1
Platform:
- [ ] :iphone: iOS
- [x] :robot: Android