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

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