flutter:用permission_handler进行系统权限的申请
一,下载
库地址
https://pub.dev/packages/permission_handler
下载:编辑pubspec.yaml,增加一行:
dependencies:
flutter:
sdk: flutter
permission_handler: ^11.4.0
然后点 pub get下载
在配置文件中添加权限:
在android/app/src/main/AndroidManifest.xml添加权限:
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-permission android:name="android.permission.CAMERA" />
二,代码
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
class PermissionPage extends StatefulWidget {
final Map arguments;
// 为title设置一个默认参数,这样的跳转该界面时可以不传值。
PermissionPage({super.key, required this.arguments});
@override
State<PermissionPage> createState() => _PermissionPageState();
}
class _PermissionPageState extends State<PermissionPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.primaryContainer,
title: Text(widget.arguments["title"]),
),
body: Center(
child: ElevatedButton(
onPressed: () async {
print("点击发生");
var status = await Permission.camera.status;
if (status.isDenied) {
// We haven't asked for permission yet or the permission has been denied before, but not permanently.
print("无权使用相机");
if (await Permission.camera.request().isGranted) {
// Either the permission was already granted before or the user just granted it.
print("请求使用相机,成功");
} else {
print("请求使用相机,失败");
}
} else {
print("可以使用相机");
}
},
child: Row(
mainAxisSize: MainAxisSize.min, // 根据内容调整大小
children: <Widget>[
Icon(Icons.add), // 图标在左侧
SizedBox(width: 10), // 可选:添加一些间隔
Text("得到权限"), // 文本在右侧
],
),
),
),
);
}
}