Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
permission_handler
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
songyanzhi
permission_handler
Commits
3711749b
Commit
3711749b
authored
Jul 24, 2018
by
Maurits van Beusekom
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Format dart code
parent
848163b5
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
23 additions
and
16 deletions
+23
-16
example/lib/main.dart
+3
-2
lib/permission_handler.dart
+9
-7
lib/utils/codec.dart
+11
-7
No files found.
example/lib/main.dart
View file @
3711749b
...
...
@@ -35,8 +35,9 @@ class _MyAppState extends State<MyApp> {
.
shouldShowRequestPermissionRationale
(
PermissionGroup
.
calendar
);
if
(
shouldShowRationale
)
{
final
Map
<
PermissionGroup
,
PermissionStatus
>
permissions
=
await
PermissionHandler
.
requestPermissions
(<
PermissionGroup
>[
PermissionGroup
.
calendar
]);
final
Map
<
PermissionGroup
,
PermissionStatus
>
permissions
=
await
PermissionHandler
.
requestPermissions
(
<
PermissionGroup
>[
PermissionGroup
.
calendar
]);
if
(
permissions
.
containsKey
(
PermissionGroup
.
calendar
))
{
permissionStatus
=
permissions
[
PermissionGroup
.
calendar
];
}
...
...
lib/permission_handler.dart
View file @
3711749b
...
...
@@ -22,8 +22,8 @@ class PermissionHandler {
///
/// 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'
);
return
hasOpened
;
final
bool
hasOpened
=
await
_channel
.
invokeMethod
(
'openAppSettings'
);
return
hasOpened
;
}
/// Request the user for access to the supplied list of permissiongroups.
...
...
@@ -32,7 +32,8 @@ class PermissionHandler {
static
Future
<
Map
<
PermissionGroup
,
PermissionStatus
>>
requestPermissions
(
List
<
PermissionGroup
>
permissions
)
async
{
final
String
jsonData
=
Codec
.
encodePermissionGroups
(
permissions
);
final
dynamic
status
=
await
_channel
.
invokeMethod
(
'requestPermissions'
,
jsonData
);
final
dynamic
status
=
await
_channel
.
invokeMethod
(
'requestPermissions'
,
jsonData
);
return
Codec
.
decodePermissionRequestResult
(
status
);
}
...
...
@@ -42,10 +43,11 @@ class PermissionHandler {
/// This method is only implemented on Android, calling this on iOS always
/// returns [false].
static
Future
<
bool
>
shouldShowRequestPermissionRationale
(
PermissionGroup
permission
)
async
{
final
bool
shouldShowRationale
=
await
_channel
.
invokeMethod
(
'shouldShowRequestPermissionRationale'
,
Codec
.
encodePermissionGroup
(
permission
));
PermissionGroup
permission
)
async
{
final
bool
shouldShowRationale
=
await
_channel
.
invokeMethod
(
'shouldShowRequestPermissionRationale'
,
Codec
.
encodePermissionGroup
(
permission
));
return
shouldShowRationale
;
}
}
lib/utils/codec.dart
View file @
3711749b
...
...
@@ -6,20 +6,23 @@ class Codec {
static
PermissionStatus
decodePermissionStatus
(
dynamic
value
)
{
final
dynamic
permission
=
json
.
decode
(
value
.
toString
());
return
PermissionStatus
.
values
.
firstWhere
(
(
PermissionStatus
e
)
=>
e
.
toString
().
split
(
'.'
).
last
==
permission
);
return
PermissionStatus
.
values
.
firstWhere
(
(
PermissionStatus
e
)
=>
e
.
toString
().
split
(
'.'
).
last
==
permission
);
}
static
Map
<
PermissionGroup
,
PermissionStatus
>
decodePermissionRequestResult
(
dynamic
value
)
{
final
dynamic
jsonObject
=
json
.
decode
(
value
.
toString
());
final
Map
<
PermissionGroup
,
PermissionStatus
>
permissionResults
=
<
PermissionGroup
,
PermissionStatus
>{};
final
Map
<
PermissionGroup
,
PermissionStatus
>
permissionResults
=
<
PermissionGroup
,
PermissionStatus
>{};
jsonObject
.
forEach
((
PermissionGroup
key
,
PermissionStatus
value
)
{
final
PermissionGroup
permissionGroup
=
PermissionGroup
.
values
.
firstWhere
((
PermissionGroup
e
)
=>
e
.
toString
().
split
(
'.'
).
last
==
key
.
toString
());
final
PermissionGroup
permissionGroup
=
PermissionGroup
.
values
.
firstWhere
(
(
PermissionGroup
e
)
=>
e
.
toString
().
split
(
'.'
).
last
==
key
.
toString
());
final
PermissionStatus
permissionStatus
=
PermissionStatus
.
values
.
firstWhere
((
PermissionStatus
e
)
=>
e
.
toString
().
split
(
'.'
).
last
==
value
.
toString
());
.
firstWhere
((
PermissionStatus
e
)
=>
e
.
toString
().
split
(
'.'
).
last
==
value
.
toString
());
permissionResults
[
permissionGroup
]
=
permissionStatus
;
});
...
...
@@ -31,7 +34,8 @@ class Codec {
json
.
encode
(
_encodeEnum
(
permissionGroup
));
static
String
encodePermissionGroups
(
List
<
PermissionGroup
>
permissions
)
=>
json
.
encode
(
permissions
.
map
((
PermissionGroup
p
)
=>
_encodeEnum
(
p
)).
toList
());
json
.
encode
(
permissions
.
map
((
PermissionGroup
p
)
=>
_encodeEnum
(
p
)).
toList
());
static
String
_encodeEnum
(
dynamic
value
)
{
return
value
.
toString
().
split
(
'.'
).
last
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment