Commit 12607587 by Maurits van Beusekom

Release 2.0.0

parents bd558504 3241f25e
matrix:
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
env:
- SHARD="Build example apks"
......@@ -21,7 +41,7 @@ matrix:
script:
- cd ./example
- flutter build apk
# Job 2) Build example IPAs
# Job 3) Build the iOS example Applications (.ipa)
- os: osx
env:
- SHARD="Build example ipas"
......
## 2.0.0
* Make methods non static so users can create an instance or override
## 1.0.1
* 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
```yaml
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.
......@@ -34,7 +34,7 @@ dependencies:
``` 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
......@@ -42,7 +42,7 @@ Map<PermissionGroup, PermissionStatus> permissions = await PermissionHandler.req
``` 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
......@@ -50,7 +50,7 @@ PermissionStatus permission = await PermissionHandler.checkPermissionStatus(Perm
``` 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)
......@@ -58,7 +58,7 @@ bool isOpened = await PermissionHandler.openAppSettings();
``` 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.
......
......@@ -6,7 +6,7 @@ buildscript {
}
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"
}
}
......
......@@ -16,7 +16,7 @@ class MyApp extends StatelessWidget {
IconButton(
icon: const Icon(Icons.settings),
onPressed: () {
PermissionHandler.openAppSettings();
PermissionHandler().openAppSettings();
},
)
],
......@@ -69,7 +69,7 @@ class _PermissionState extends State<PermissionWidget> {
void _listenForPermissionStatus() async {
final PermissionStatus status =
await PermissionHandler.checkPermissionStatus(_permissionGroup);
await PermissionHandler().checkPermissionStatus(_permissionGroup);
setState(() {
_permissionStatus = status;
......@@ -104,7 +104,7 @@ class _PermissionState extends State<PermissionWidget> {
void requestPermission(PermissionGroup permission) async {
final List<PermissionGroup> permissions = <PermissionGroup>[permission];
final Map<PermissionGroup, PermissionStatus> permissionRequestResult =
await PermissionHandler.requestPermissions(permissions);
await PermissionHandler().requestPermissions(permissions);
setState(() {
_permissionStatus = permissionRequestResult[permission];
......
......@@ -10,9 +10,6 @@ dependencies:
cupertino_icons: ^0.1.2
dev_dependencies:
flutter_test:
sdk: flutter
permission_handler:
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 @@
#
Pod::Spec.new do |s|
s.name = 'permission_handler'
s.version = '1.0.1'
s.version = '2.0.0'
s.summary = 'Permission plugin for Flutter.'
s.description = <<-DESC
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';
import 'dart:io';
import 'package:flutter/services.dart';
import 'package:meta/meta.dart';
part 'package:permission_handler/permission_enums.dart';
part 'package:permission_handler/utils/codec.dart';
/// Provides a cross-platform (iOS, Android) API to request and check permissions.
class PermissionHandler {
static const MethodChannel _channel =
factory PermissionHandler() {
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].
static Future<PermissionStatus> checkPermissionStatus(
Future<PermissionStatus> checkPermissionStatus(
PermissionGroup permission) async {
final dynamic status = await _channel.invokeMethod(
final dynamic status = await _methodChannel.invokeMethod(
'checkPermissionStatus', Codec.encodePermissionGroup(permission));
return Codec.decodePermissionStatus(status);
......@@ -26,19 +41,19 @@ class PermissionHandler {
/// Open the App settings page.
///
/// Returns [true] if the app settings page could be opened, otherwise [false] is returned.
static Future<bool> openAppSettings() async {
final bool hasOpened = await _channel.invokeMethod('openAppSettings');
Future<bool> openAppSettings() async {
final bool hasOpened = await _methodChannel.invokeMethod('openAppSettings');
return hasOpened;
}
/// Request the user for access to the supplied list of permissiongroups.
///
/// Returns a [Map] containing the status per requested permissiongroup.
static Future<Map<PermissionGroup, PermissionStatus>> requestPermissions(
Future<Map<PermissionGroup, PermissionStatus>> requestPermissions(
List<PermissionGroup> permissions) async {
final String jsonData = Codec.encodePermissionGroups(permissions);
final dynamic status =
await _channel.invokeMethod('requestPermissions', jsonData);
await _methodChannel.invokeMethod('requestPermissions', jsonData);
return Codec.decodePermissionRequestResult(status);
}
......@@ -47,13 +62,13 @@ class PermissionHandler {
///
/// This method is only implemented on Android, calling this on iOS always
/// returns [false].
static Future<bool> shouldShowRequestPermissionRationale(
Future<bool> shouldShowRequestPermissionRationale(
PermissionGroup permission) async {
if (!Platform.isAndroid) {
return false;
}
final bool shouldShowRationale = await _channel.invokeMethod(
final bool shouldShowRationale = await _methodChannel.invokeMethod(
'shouldShowRequestPermissionRationale',
Codec.encodePermissionGroup(permission));
......
name: permission_handler
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>
homepage: https://github.com/baseflowit/flutter-permission-handler
......@@ -18,7 +18,7 @@ flutter:
pluginClass: PermissionHandlerPlugin
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:
# 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