import 'dart:async'; import 'dart:io'; import 'package:android_power_manager/android_power_manager.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:intl/date_symbol_data_local.dart'; //import 'file_manager.dart'; import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; import '../main.dart'; import 'common.dart'; //整个Flutter App的入口02 checkPermission() { WidgetsFlutterBinding.ensureInitialized(); initializeDateFormatting("zh_CN", null).then((value) async { //整个Flutter App的入口03 bool ret = await getPermission(); if (ret) { //整个Flutter App的入口04 getSDCardDir().then((value) { //整个Flutter App的入口05 //runApp(MyApp()); runApp(MaterialApp( //title: '启动图demo', debugShowCheckedModeBanner: false, theme: new ThemeData( brightness: Brightness.light, backgroundColor: Colors.white, platform: TargetPlatform.android), home: new SplashScreen(), //整个Flutter App的入口06 //整个Flutter App的入口07 routes: {'/home': (BuildContext context) => MyApp()}, )); }); } else { Fluttertoast.showToast(msg: '用户未授权,程序无法正常运行!', gravity: ToastGravity.CENTER); SystemChannels.platform.invokeMethod('SystemNavigator.pop'); } }); } requestIgnoreBatteryOptimizations() async { bool success = await AndroidPowerManager.requestIgnoreBatteryOptimizations(); if (success) { String isIgnoringBatteryOptimizations = await _checkBatteryOptimizations(); // setState(() { // _isIgnoringBatteryOptimizations = isIgnoringBatteryOptimizations; // }); print("isIgnoringBatteryOptimizations = $isIgnoringBatteryOptimizations"); } } Future _checkBatteryOptimizations() async { String isIgnoringBatteryOptimizations; // Platform messages may fail, so we use a try/catch PlatformException. try { isIgnoringBatteryOptimizations = '${await AndroidPowerManager.isIgnoringBatteryOptimizations}'; } on PlatformException { isIgnoringBatteryOptimizations = 'Failed to get platform version.'; } return isIgnoringBatteryOptimizations; } //整个Flutter App的入口03 // Permission check,适用于 permission_handler: ^5.x.x Future getPermission() async { if (Platform.isAndroid) { await requestIgnoreBatteryOptimizations(); // 请求忽略电池优化 // You can request multiple permissions at once. Map permissionStatuses = await [ Permission.storage, Permission.camera, Permission.microphone, ].request(); if (permissionStatuses[Permission.storage] != PermissionStatus.granted || permissionStatuses[Permission.camera] != PermissionStatus.granted || permissionStatuses[Permission.microphone] != PermissionStatus.granted) { return false; } } else if (Platform.isIOS) {} return true; } // Permission check,适用于 permission_handler: ^3.3.0 // Future getPermission() async { // List permissionGroupList = [ // PermissionGroup.storage, // PermissionGroup.camera, // PermissionGroup.microphone, // ]; // if (Platform.isAndroid) { // PermissionStatus permission = await PermissionHandler().checkPermissionStatus(PermissionGroup.storage); // if (permission != PermissionStatus.granted) { // await PermissionHandler().requestPermissions(permissionGroupList); // } // permission = await PermissionHandler().checkPermissionStatus(PermissionGroup.storage); // if (permission != PermissionStatus.granted) { // return false; // } // } else if (Platform.isIOS) {} // return true; // } //整个Flutter App的入口04 Future getSDCardDir() async { Common().sDCardDir = (await getExternalStorageDirectory()).path; }