Files

92 lines
2.7 KiB
Dart
Raw Permalink Normal View History

2022-01-24 21:39:14 +01:00
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
class Content extends StatefulWidget {
const Content({Key? key}) : super(key: key);
@override
_ContentState createState() => _ContentState();
}
class _ContentState extends State<Content> {
String? _coordinates;
@override
Widget build(BuildContext context) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
child: Text("Test coordinates"),
onPressed: () async {
try {
_coordinates = (await _getLocationAsync()).toString();
setState(() {});
} catch (e) {
_coordinates = e.toString();
setState(() {});
}
},
),
_coordinates != null
? Text(_coordinates!.toString())
: const SizedBox(),
],
),
);
}
Future<Position> _getLocationAsync() async {
bool serviceEnabled;
LocationPermission permission;
showDialog<void>(
context: context,
builder: (BuildContext dialogContext) {
return const SimpleDialog(
children: [
Center(
child: CircularProgressIndicator(),
),
],
);
},
);
// 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.
var position = await Geolocator.getCurrentPosition();
Navigator.pop(context);
return position;
}
}