Add App Permissions Utils

merge-requests/745/head
Mohammad Aljammal 5 years ago
parent b66b624f14
commit 654a86a9b6

@ -70,6 +70,7 @@ class VideoCallService extends BaseService{
});
});
}
Future endCall(int vCID, bool isPatient) async {
hasError = false;

@ -13,6 +13,7 @@ import 'package:doctor_app_flutter/screens/live_care/end_call_screen.dart';
import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_InPatient.dart';
import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_other.dart';
import 'package:doctor_app_flutter/screens/patients/profile/profile_screen/profile_gird_for_search.dart';
import 'package:doctor_app_flutter/util/NotificationPermissionUtils.dart';
import 'package:doctor_app_flutter/util/VideoChannel.dart';
import 'package:doctor_app_flutter/util/dr_app_toast_msg.dart';
import 'package:doctor_app_flutter/util/helpers.dart';
@ -354,7 +355,10 @@ class _PatientProfileScreenState extends State<PatientProfileScreen>
patient.episodeNo = 0;
GifLoaderDialogUtils.hideDialog(context);
locator<VideoCallService>().openVideo(model.startCallRes, patient, callConnected, callDisconnected);
AppPermissionsUtils.requestVideoCallPermission(context: context,onTapGrant: (){
locator<VideoCallService>().openVideo(model.startCallRes, patient, callConnected, callDisconnected);
});
// await VideoChannel.openVideoCallScreen(
// kToken: "T1==cGFydG5lcl9pZD00NzI0Nzk1NCZzaWc9NGIyZDljOTY3YjFiNWU1YzUzNzFmMjIyNjJmNmEzY2Y5NzZjOTdlYzpzZXNzaW9uX2lkPTFfTVg0ME56STBOemsxTkg1LU1UWXlNekEyTlRRMU9EVXhObjVrVFRoMFlVdFJXaXRYTWpadFZGZHFhSGxZVGpOdE1UVi1mZyZjcmVhdGVfdGltZT0xNjIzMDY1NDk1Jm5vbmNlPTAuMjM2Mjk0NTIwMTkyOTA4OTcmcm9sZT1wdWJsaXNoZXImZXhwaXJlX3RpbWU9MTYyNTY1NzQ5NCZpbml0aWFsX2xheW91dF9jbGFzc19saXN0PQ==",//model.startCallRes.openTokenID,

@ -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…
Cancel
Save