Commit 12607587 by Maurits van Beusekom

Release 2.0.0

parents bd558504 3241f25e
matrix: matrix:
include: include:
# Job 1) Run analyzer
- os: linux
env:
- SHARD=Analyze
sudo: false
addons:
apt:
# Flutter depends on /usr/lib/x86_64-linux-gnu/libstdc++.so.6 version GLIBCXX_3.4.18
sources:
- ubuntu-toolchain-r-test # if we don't specify this, the libstdc++6 we get is the wrong version
packages:
- libstdc++6
- fonts-droid
before_script:
- git clone https://github.com/flutter/flutter.git $HOME/flutter
- export PATH=$HOME/flutter/bin:$HOME/flutter/bin/cache/dart-sdk/bin:$PATH
- flutter doctor
script:
- flutter analyze
# Job 2) Build the Android axample application (.apk)
- os: linux - os: linux
env: env:
- SHARD="Build example apks" - SHARD="Build example apks"
...@@ -21,7 +41,7 @@ matrix: ...@@ -21,7 +41,7 @@ matrix:
script: script:
- cd ./example - cd ./example
- flutter build apk - flutter build apk
# Job 2) Build example IPAs # Job 3) Build the iOS example Applications (.ipa)
- os: osx - os: osx
env: env:
- SHARD="Build example ipas" - SHARD="Build example ipas"
......
## 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.
......
...@@ -6,7 +6,7 @@ buildscript { ...@@ -6,7 +6,7 @@ buildscript {
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.1.3' classpath 'com.android.tools.build:gradle:3.1.4'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
} }
} }
......
...@@ -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];
......
...@@ -10,9 +10,6 @@ dependencies: ...@@ -10,9 +10,6 @@ dependencies:
cupertino_icons: ^0.1.2 cupertino_icons: ^0.1.2
dev_dependencies: dev_dependencies:
flutter_test:
sdk: flutter
permission_handler: permission_handler:
path: ../ path: ../
......
// This is a basic Flutter widget test.
// To perform an interaction with a widget in your test, use the WidgetTester utility that Flutter
// provides. For example, you can send tap and scroll gestures. You can also use WidgetTester to
// find child widgets in the widget tree, read text, and verify that the values of widget properties
// are correct.
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:permission_handler_example/main.dart';
void main() {
testWidgets('Verify Platform version', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(new MyApp());
// Verify that platform version is retrieved.
expect(
find.byWidgetPredicate(
(Widget widget) =>
widget is Text && widget.data.startsWith('Running on:'),
),
findsOneWidget);
});
}
...@@ -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