Commit 3241f25e by Maurits van Beusekom Committed by GitHub

Merge pull request #18 from martijn00/non-static

Make methods non static
parents e79c840a f35f4f44
## 2.0.0
* Make methods non static so users can create an instance or override
## 1.0.1 ## 1.0.1
* Converted the plugin into a library so that developers don't have to import additional files; * Converted the plugin into a library so that developers don't have to import additional files;
......
...@@ -22,7 +22,7 @@ To use this plugin, add `permission_handler` as a [dependency in your pubspec.ya ...@@ -22,7 +22,7 @@ To use this plugin, add `permission_handler` as a [dependency in your pubspec.ya
```yaml ```yaml
dependencies: dependencies:
permission_handler: '^1.0.1' permission_handler: '^2.0.0'
``` ```
> **NOTE:** There's a known issue with integrating plugins that use Swift into a Flutter project created with the Objective-C template. See issue [Flutter#16049](https://github.com/flutter/flutter/issues/16049) for help on integration. > **NOTE:** There's a known issue with integrating plugins that use Swift into a Flutter project created with the Objective-C template. See issue [Flutter#16049](https://github.com/flutter/flutter/issues/16049) for help on integration.
...@@ -34,7 +34,7 @@ dependencies: ...@@ -34,7 +34,7 @@ dependencies:
``` dart ``` dart
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
Map<PermissionGroup, PermissionStatus> permissions = await PermissionHandler.requestPermissions([PermissionGroup.contacts]); Map<PermissionGroup, PermissionStatus> permissions = await PermissionHandler().requestPermissions([PermissionGroup.contacts]);
``` ```
### Checking permission ### Checking permission
...@@ -42,7 +42,7 @@ Map<PermissionGroup, PermissionStatus> permissions = await PermissionHandler.req ...@@ -42,7 +42,7 @@ Map<PermissionGroup, PermissionStatus> permissions = await PermissionHandler.req
``` dart ``` dart
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
PermissionStatus permission = await PermissionHandler.checkPermissionStatus(PermissionGroup.contacts); PermissionStatus permission = await PermissionHandler().checkPermissionStatus(PermissionGroup.contacts);
``` ```
### Open app settings ### Open app settings
...@@ -50,7 +50,7 @@ PermissionStatus permission = await PermissionHandler.checkPermissionStatus(Perm ...@@ -50,7 +50,7 @@ PermissionStatus permission = await PermissionHandler.checkPermissionStatus(Perm
``` dart ``` dart
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
bool isOpened = await PermissionHandler.openAppSettings(); bool isOpened = await PermissionHandler().openAppSettings();
``` ```
### Show a rationale for requesting permission (Android only) ### Show a rationale for requesting permission (Android only)
...@@ -58,7 +58,7 @@ bool isOpened = await PermissionHandler.openAppSettings(); ...@@ -58,7 +58,7 @@ bool isOpened = await PermissionHandler.openAppSettings();
``` dart ``` dart
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
bool isShown = await PermissionHandler.shouldShowRequestPermissionRationale(PermissionGroup.contacts); bool isShown = await PermissionHandler().shouldShowRequestPermissionRationale(PermissionGroup.contacts);
``` ```
This will always return `false` on iOS. This will always return `false` on iOS.
......
...@@ -16,7 +16,7 @@ class MyApp extends StatelessWidget { ...@@ -16,7 +16,7 @@ class MyApp extends StatelessWidget {
IconButton( IconButton(
icon: const Icon(Icons.settings), icon: const Icon(Icons.settings),
onPressed: () { onPressed: () {
PermissionHandler.openAppSettings(); PermissionHandler().openAppSettings();
}, },
) )
], ],
...@@ -69,7 +69,7 @@ class _PermissionState extends State<PermissionWidget> { ...@@ -69,7 +69,7 @@ class _PermissionState extends State<PermissionWidget> {
void _listenForPermissionStatus() async { void _listenForPermissionStatus() async {
final PermissionStatus status = final PermissionStatus status =
await PermissionHandler.checkPermissionStatus(_permissionGroup); await PermissionHandler().checkPermissionStatus(_permissionGroup);
setState(() { setState(() {
_permissionStatus = status; _permissionStatus = status;
...@@ -104,7 +104,7 @@ class _PermissionState extends State<PermissionWidget> { ...@@ -104,7 +104,7 @@ class _PermissionState extends State<PermissionWidget> {
void requestPermission(PermissionGroup permission) async { void requestPermission(PermissionGroup permission) async {
final List<PermissionGroup> permissions = <PermissionGroup>[permission]; final List<PermissionGroup> permissions = <PermissionGroup>[permission];
final Map<PermissionGroup, PermissionStatus> permissionRequestResult = final Map<PermissionGroup, PermissionStatus> permissionRequestResult =
await PermissionHandler.requestPermissions(permissions); await PermissionHandler().requestPermissions(permissions);
setState(() { setState(() {
_permissionStatus = permissionRequestResult[permission]; _permissionStatus = permissionRequestResult[permission];
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# #
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'permission_handler' s.name = 'permission_handler'
s.version = '1.0.1' s.version = '2.0.0'
s.summary = 'Permission plugin for Flutter.' s.summary = 'Permission plugin for Flutter.'
s.description = <<-DESC s.description = <<-DESC
Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions. Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.
......
...@@ -5,19 +5,34 @@ import 'dart:convert'; ...@@ -5,19 +5,34 @@ import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:meta/meta.dart';
part 'package:permission_handler/permission_enums.dart'; part 'package:permission_handler/permission_enums.dart';
part 'package:permission_handler/utils/codec.dart'; part 'package:permission_handler/utils/codec.dart';
/// Provides a cross-platform (iOS, Android) API to request and check permissions. /// Provides a cross-platform (iOS, Android) API to request and check permissions.
class PermissionHandler { class PermissionHandler {
static const MethodChannel _channel = factory PermissionHandler() {
const MethodChannel('flutter.baseflow.com/permissions/methods'); if (_instance == null) {
const MethodChannel methodChannel =
const MethodChannel('flutter.baseflow.com/permissions/methods');
_instance = new PermissionHandler.private(methodChannel);
}
return _instance;
}
@visibleForTesting
PermissionHandler.private(this._methodChannel);
static PermissionHandler _instance;
final MethodChannel _methodChannel;
/// Returns a [Future] containing the current permission status for the supplied [PermissionGroup]. /// Returns a [Future] containing the current permission status for the supplied [PermissionGroup].
static Future<PermissionStatus> checkPermissionStatus( Future<PermissionStatus> checkPermissionStatus(
PermissionGroup permission) async { PermissionGroup permission) async {
final dynamic status = await _channel.invokeMethod( final dynamic status = await _methodChannel.invokeMethod(
'checkPermissionStatus', Codec.encodePermissionGroup(permission)); 'checkPermissionStatus', Codec.encodePermissionGroup(permission));
return Codec.decodePermissionStatus(status); return Codec.decodePermissionStatus(status);
...@@ -26,19 +41,19 @@ class PermissionHandler { ...@@ -26,19 +41,19 @@ class PermissionHandler {
/// Open the App settings page. /// Open the App settings page.
/// ///
/// Returns [true] if the app settings page could be opened, otherwise [false] is returned. /// Returns [true] if the app settings page could be opened, otherwise [false] is returned.
static Future<bool> openAppSettings() async { Future<bool> openAppSettings() async {
final bool hasOpened = await _channel.invokeMethod('openAppSettings'); final bool hasOpened = await _methodChannel.invokeMethod('openAppSettings');
return hasOpened; return hasOpened;
} }
/// Request the user for access to the supplied list of permissiongroups. /// Request the user for access to the supplied list of permissiongroups.
/// ///
/// Returns a [Map] containing the status per requested permissiongroup. /// Returns a [Map] containing the status per requested permissiongroup.
static Future<Map<PermissionGroup, PermissionStatus>> requestPermissions( Future<Map<PermissionGroup, PermissionStatus>> requestPermissions(
List<PermissionGroup> permissions) async { List<PermissionGroup> permissions) async {
final String jsonData = Codec.encodePermissionGroups(permissions); final String jsonData = Codec.encodePermissionGroups(permissions);
final dynamic status = final dynamic status =
await _channel.invokeMethod('requestPermissions', jsonData); await _methodChannel.invokeMethod('requestPermissions', jsonData);
return Codec.decodePermissionRequestResult(status); return Codec.decodePermissionRequestResult(status);
} }
...@@ -47,13 +62,13 @@ class PermissionHandler { ...@@ -47,13 +62,13 @@ class PermissionHandler {
/// ///
/// This method is only implemented on Android, calling this on iOS always /// This method is only implemented on Android, calling this on iOS always
/// returns [false]. /// returns [false].
static Future<bool> shouldShowRequestPermissionRationale( Future<bool> shouldShowRequestPermissionRationale(
PermissionGroup permission) async { PermissionGroup permission) async {
if (!Platform.isAndroid) { if (!Platform.isAndroid) {
return false; return false;
} }
final bool shouldShowRationale = await _channel.invokeMethod( final bool shouldShowRationale = await _methodChannel.invokeMethod(
'shouldShowRequestPermissionRationale', 'shouldShowRequestPermissionRationale',
Codec.encodePermissionGroup(permission)); Codec.encodePermissionGroup(permission));
......
name: permission_handler name: permission_handler
description: Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions. description: Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.
version: 1.0.1 version: 2.0.0
author: Baseflow <hello@baseflow.com> author: Baseflow <hello@baseflow.com>
homepage: https://github.com/baseflowit/flutter-permission-handler homepage: https://github.com/baseflowit/flutter-permission-handler
...@@ -18,7 +18,7 @@ flutter: ...@@ -18,7 +18,7 @@ flutter:
pluginClass: PermissionHandlerPlugin pluginClass: PermissionHandlerPlugin
environment: environment:
sdk: ">=2.0.0-dev.58.0 <3.0.0" sdk: ">=2.0.0-dev.68.0 <3.0.0"
# To add assets to your plugin package, add an assets section, like this: # To add assets to your plugin package, add an assets section, like this:
# assets: # assets:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment