Add App Permissions Utils
parent
b66b624f14
commit
654a86a9b6
@ -0,0 +1,42 @@
|
||||
import 'package:doctor_app_flutter/widgets/dialog/AskPermissionDialog.dart';
|
||||
import 'package:doctor_app_flutter/widgets/transitions/slide_up_page.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
|
||||
|
||||
class AppPermissionsUtils {
|
||||
|
||||
static requestVideoCallPermission({BuildContext context, String type,Function onTapGrant}) async {
|
||||
|
||||
var cameraPermission = Permission.camera;
|
||||
var microphonePermission = Permission.microphone;
|
||||
PermissionStatus permissionCameraStatus = await cameraPermission.status;
|
||||
PermissionStatus permissionMicrophoneStatus = await microphonePermission.status;
|
||||
|
||||
if (permissionCameraStatus.isPermanentlyDenied || permissionMicrophoneStatus.isPermanentlyDenied) {
|
||||
await _showPermissionDialog(context, type,onTapGrant);
|
||||
} else if (!permissionCameraStatus.isGranted || !permissionMicrophoneStatus.isGranted) {
|
||||
permissionCameraStatus = await cameraPermission.request();
|
||||
permissionMicrophoneStatus = await microphonePermission.request();
|
||||
if (permissionCameraStatus.isDenied || permissionMicrophoneStatus.isDenied)
|
||||
await _showPermissionDialog(context, type,onTapGrant);
|
||||
else
|
||||
onTapGrant();
|
||||
} else if (permissionCameraStatus.isDenied || permissionMicrophoneStatus.isDenied)
|
||||
await _showPermissionDialog(context, type,onTapGrant);
|
||||
else
|
||||
onTapGrant();
|
||||
}
|
||||
|
||||
static _showPermissionDialog(BuildContext context, String type,Function onTapGrant) async {
|
||||
Navigator.push(
|
||||
context, SlideUpPageRoute(widget: AskPermissionDialog(type: type,onTapGrant: onTapGrant,)));
|
||||
}
|
||||
|
||||
static Future<bool> isVideoCallPermissionGranted() async {
|
||||
PermissionStatus permissionCameraStatus = await Permission.camera.status;
|
||||
PermissionStatus permissionMicrophoneStatus = await Permission.microphone.status;
|
||||
return permissionCameraStatus.isGranted && permissionMicrophoneStatus.isGranted;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,90 @@
|
||||
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/buttons/app_buttons_widget.dart';
|
||||
import 'package:doctor_app_flutter/widgets/shared/buttons/secondary_button.dart';
|
||||
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
|
||||
class AskPermissionDialog extends StatefulWidget {
|
||||
final String type;
|
||||
final Function onTapGrant;
|
||||
|
||||
AskPermissionDialog({this.type, this.onTapGrant});
|
||||
|
||||
@override
|
||||
_AskPermissionDialogState createState() => _AskPermissionDialogState();
|
||||
}
|
||||
|
||||
class _AskPermissionDialogState extends State<AskPermissionDialog> {
|
||||
getText() {
|
||||
return "Turn on your Camera, Microphone to start video call";
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
automaticallyImplyLeading: false,
|
||||
elevation: 0.5,
|
||||
actions: <Widget>[
|
||||
Padding(
|
||||
padding: EdgeInsets.only(right: 18.0),
|
||||
child: GestureDetector(
|
||||
behavior: HitTestBehavior.opaque,
|
||||
onTap: Feedback.wrapForTap(() {
|
||||
Navigator.pop(context);
|
||||
}, context),
|
||||
child:
|
||||
Icon(EvaIcons.close, color: Theme.of(context).primaryColor),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
body: Container(
|
||||
margin: EdgeInsets.symmetric(horizontal: 48),
|
||||
child: Center(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
AppText(
|
||||
"🙋♀",
|
||||
style: "headline1",
|
||||
color: Colors.black,
|
||||
),
|
||||
AppText(
|
||||
"Don't miss out!",
|
||||
style: "headline4",
|
||||
color: Colors.black,
|
||||
),
|
||||
SizedBox(
|
||||
height: 8,
|
||||
),
|
||||
AppText(
|
||||
getText(),
|
||||
color: Colors.grey,
|
||||
style: "bodyText2",
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
SizedBox(
|
||||
height: MediaQuery.of(context).size.height / 6,
|
||||
),
|
||||
AppButton(
|
||||
fontColor: Theme.of(context).backgroundColor,
|
||||
color: Colors.red[700],
|
||||
title: "Turn On Camera, Microphone",
|
||||
onPressed: () async {
|
||||
openAppSettings().then((value) {
|
||||
Navigator.pop(context);
|
||||
widget.onTapGrant();
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue