flutte动态权限申请

3.2.2版本:

添加依赖

  permission_handler: ^3.2.2

androidmanifest.xml添加对应的用户权限

在flutter 中app入口申请权限:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:permission_handler/permission_handler.dart';



import 'users.dart';



Future main() async {
  if (!await _requestPermissions()) {

    await AppUtils.popApp();
  } else {
    runApp(new MyApp());
  }

}

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    final appTitle = "flutter demo";
    return new MaterialApp(
      title: appTitle,
      home: new JobPage(),
    );
  }

}

Future<bool> _requestPermissions() async {
  Map<PermissionGroup, PermissionStatus> permissions =
      await PermissionHandler().requestPermissions([
    PermissionGroup.storage,
    PermissionGroup.location,
  ]);


  List<bool> results = permissions.values.toList().map((status) {
    return status == PermissionStatus.granted;
  }).toList();


  return !results.contains(false);
}

class AppUtils {
  static Future<void> popApp() async {
    await SystemChannels.platform.invokeMethod('SystemNavigator.pop');
  }

  static Future checkUpgrade() async {
    try {
      final bool result =
      await ApplicationMethodChannel.main.invokeMethod('checkUpgrade');
      print('result=$result');
    } on PlatformException {
      print('faied');
    }
  }
}
class ApplicationMethodChannel {
  static MethodChannel main = MethodChannel('main');
}

 


 

5.0.1版本:

添加依赖

  permission_handler: ^5.0.1+1

androidmanifest.xml添加对应的用户权限

在flutter 中app入口申请权限:

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutterstudydemo/s/RefreshIndicatorDemo.dart';
import 'package:permission_handler/permission_handler.dart';



void main() async {
  //初始化插件
  WidgetsFlutterBinding.ensureInitialized();
  if (!await _requestPermissions()) {

    await AppUtils.popApp();
  } else {
    runApp(new MyApp());
  }

}
Future<bool> _requestPermissions() async {

  //申请一个或者多个
  Map<Permission, PermissionStatus> statuses = await [
    Permission.storage,
    Permission.camera,
  ].request();
  Map<Permission, PermissionStatus> requests = await statuses.keys.toList().request();
  List<bool> results = requests.values.toList().map((status) {
    if (Platform.isAndroid) {
      return status == PermissionStatus.granted;
    }else{
      return true;
    }

  }).toList();


  return !results.contains(false);
}
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate

      ],
      supportedLocales: [
        Locale('zh', 'CH'),
        Locale('en', 'US'),
      ],
      locale: Locale('zh'),
      home: RefreshIndicatorDemo(),
    );
  }
}
class AppUtils {
  static Future<void> popApp() async {
    await SystemChannels.platform.invokeMethod('SystemNavigator.pop');
  }
}

 

posted on 2019-09-19 20:36  LoaderMan  阅读(4545)  评论(0编辑  收藏  举报

导航