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("得到权限"), // 文本在右侧
            ],
          ),
        ),
      ),

    );
  }
}

三,测试效果:

posted @ 2025-03-29 09:02  刘宏缔的架构森林  阅读(171)  评论(0)    收藏  举报