戴余标 2 years ago
parent 80b04d6160
commit 2113e45101

@ -1,69 +1,68 @@
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:permission_handler_platform_interface/permission_handler_platform_interface.dart';
import 'package:project_telephony/base/base_style.dart';
// import 'package:project_telephony/main.dart';
import 'package:project_telephony/ui/widget/plone_back_button.dart';
import 'package:project_telephony/ui/widget/plone_bottom.dart';
import 'package:project_telephony/utils/headers.dart';
// import 'package:telephony/telephony.dart';
import 'package:telephony/telephony.dart';
class PrivacyRightsPage extends StatefulWidget {
final String name;
const PrivacyRightsPage({Key? key, required this.name}) : super(key: key);
@override
_PrivacyRightsPageState createState() => _PrivacyRightsPageState();
}
// final Telephony telephony = Telephony.instance;
final Telephony telephony = Telephony.instance;
// late final bool permissionsGranted;
// String body = "";
// @override
// initState() async {
// // initPlatformState();
// void initState() async {
// initPlatformState();
// }
bool? pd;
class _PrivacyRightsPageState extends State<PrivacyRightsPage> {
final Permission _permission = Permission.phone;
final PermissionHandlerPlatform _permissionHandler =
PermissionHandlerPlatform.instance;
PermissionStatus _permissionStatus = PermissionStatus.denied;
Future<void> requestPermission(Permission permission) async {
final status = await _permissionHandler.requestPermissions([permission]);
setState(() {
_permissionStatus = status[permission] ?? PermissionStatus.denied;
});
}
@override
void initState() {
Future.delayed(const Duration(seconds: 2), () async {
await _refresh();
});
setState(() {});
super.initState();
_listenForPermissionStatus();
}
_refresh() async {
var status = await Permission.camera.status;
pd = status.isDenied;
setState(() {});
void _listenForPermissionStatus() async {
final status = await _permissionHandler.checkPermissionStatus(_permission);
setState(() => _permissionStatus = status);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
elevation: 0,
title: Text(
widget.name,
style: TextStyle(
fontSize: BaseStyle.fontSize34,
color: BaseStyle.color333333,
fontWeight: FontWeight.bold),
),
titleSpacing: 162.w,
leading: const CloudBackButton(isSpecial: true),
backgroundColor: kForeGroundColor),
backgroundColor: Colors.white,
body: widget.name == "隐私政策"
? null
: Column(
children: [
_getRights(pd!),
],
));
appBar: AppBar(
elevation: 0,
title: Text(
widget.name,
style: TextStyle(
fontSize: BaseStyle.fontSize34,
color: BaseStyle.color333333,
fontWeight: FontWeight.bold),
),
titleSpacing: 162.w,
leading: const CloudBackButton(isSpecial: true),
backgroundColor: kForeGroundColor),
backgroundColor: Colors.white,
body: widget.name == "隐私政策" ? null : _getRights(true),
);
}
// onMessage(SmsMessage message) async {
@ -89,70 +88,117 @@ class _PrivacyRightsPageState extends State<PrivacyRightsPage> {
// }
// if (!mounted) return;
// }
_getRights(bool pd) {
return GestureDetector(
onTap: () {},
child: Container(
height: 144.w,
width: 750.w,
padding: EdgeInsets.symmetric(horizontal: 64.w, vertical: 17.w),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'获取设备来电',
style: TextStyle(
fontSize: 32.sp,
color: BaseStyle.color333333,
fontWeight: FontWeight.bold),
),
16.hb,
Text('用于获取设备',
style: TextStyle(
fontSize: 28.sp, color: BaseStyle.color999999)),
],
),
269.wb,
Text(pd ? "未允许" : "已允许",
style: TextStyle(
fontSize: 24.sp,
color: pd
? const Color(0xFFFF4D4D)
: BaseStyle.color999999)),
SizedBox(
width: 48.w,
height: 48.w,
child: const Icon(
Icons.keyboard_arrow_right,
),
),
],
)),
);
return ListView(
children: Permission.values
.where((permission) {
return permission == Permission.phone ||
permission == Permission.sms;
})
.map((permission) => PermissionWidget(permission))
.toList());
}
}
class PermissionWidget extends StatefulWidget {
const PermissionWidget(this._permission);
final Permission _permission;
@override
_PermissionState createState() => _PermissionState(_permission);
}
class _PermissionState extends State<PermissionWidget> {
_PermissionState(this._permission);
final Permission _permission;
final PermissionHandlerPlatform _permissionHandler =
PermissionHandlerPlatform.instance;
PermissionStatus _permissionStatus = PermissionStatus.denied;
List<String> title = [
"获取来电权限",
"获取短信权限",
];
List<String> sub = [
"用于监听来电状态",
"用于发送短信",
];
@override
void initState() {
super.initState();
_listenForPermissionStatus();
}
void _listenForPermissionStatus() async {
final status = await _permissionHandler.checkPermissionStatus(_permission);
setState(() => _permissionStatus = status);
}
Color getPermissionColor() {
switch (_permissionStatus) {
case PermissionStatus.denied:
return Colors.red;
case PermissionStatus.granted:
return Colors.green;
case PermissionStatus.limited:
return Colors.orange;
default:
return Colors.grey;
}
}
String getPermissionStu() {
switch (_permissionStatus) {
case PermissionStatus.denied:
return "未允许";
case PermissionStatus.granted:
return "已允许";
default:
return "未允许";
}
}
_getA() {
return PloneBottom(
onTap: () async {
var status = await Permission.camera.status;
if (status.isDenied) {
// openAppSettings();//
// print(status.isDenied);
// print("已允许");
} else {
print("未允许");
}
@override
Widget build(BuildContext context) {
return ListTile(
title: Text(
_permission.value==8?title[0]:title[1],
style: Theme.of(context).textTheme.titleMedium,
),
subtitle: Text(
_permission.value==8?sub[0]:sub[1],
),
trailing: Wrap(
children: [
Text(getPermissionStu(),
style: TextStyle(color: getPermissionColor())),
const Icon(Icons.arrow_forward_ios),
],
),
onTap: () {
requestPermission(_permission);
},
);
// var status = await Permission.camera.status;
// if (status.isDenied) {
// return Text("已允许");
// } else {
// return Text("未允许");
// }
}
}
void checkServiceStatus(
BuildContext context, PermissionWithService permission) async {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(
(await _permissionHandler.checkServiceStatus(permission)).toString()),
));
}
Future<void> requestPermission(Permission permission) async {
final status = await _permissionHandler.requestPermissions([permission]);
setState(() {
print(status);
_permissionStatus = status[permission] ?? PermissionStatus.denied;
print(_permissionStatus);
});
}
}
Loading…
Cancel
Save