import 'package:flutter/material.dart'; import 'package:location/location.dart'; class PermissionStatusWidget extends StatefulWidget { const PermissionStatusWidget({Key key}) : super(key: key); @override _PermissionStatusState createState() => _PermissionStatusState(); } class _PermissionStatusState extends State { final Location location = Location(); PermissionStatus _permissionGranted; Future _checkPermissions() async { final PermissionStatus permissionGrantedResult = await location.hasPermission(); setState(() { _permissionGranted = permissionGrantedResult; }); } Future _requestPermission() async { if (_permissionGranted != PermissionStatus.granted) { final PermissionStatus permissionRequestedResult = await location.requestPermission(); setState(() { _permissionGranted = permissionRequestedResult; }); if (permissionRequestedResult != PermissionStatus.granted) { return; } } } @override Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Permission status: ${_permissionGranted ?? "unknown"}', style: Theme.of(context).textTheme.body2, ), Row( children: [ Container( margin: const EdgeInsets.only(right: 42), child: RaisedButton( child: const Text('Check'), onPressed: _checkPermissions, ), ), RaisedButton( child: const Text('Request'), onPressed: _permissionGranted == PermissionStatus.granted ? null : _requestPermission, ) ], ) ], ); } }