我正在使用flutter对视频播放器应用程序进行编码。我正在递归地尝试遍历每个文件夹以获取所有文件->然后创建视频文件的独占列表->然后构建所有视频文件的listView。
但编译器无法迭代并进入"storage/emulated/0/Android/data"文件夹,因此它抛出了"Permission denied"错误。
我如何跳过这些不可访问的文件夹/文件并继续迭代,或者如何获得访问这些文件夹的权限(存储/模拟/0/Android/data(?
我本想得到手机上所有文件的列表。
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:mark_player/custom%20widgets/app_bar.dart';
class newHomeScreen extends StatefulWidget {
const newHomeScreen({ Key? key }) : super(key: key);
@override
State<newHomeScreen> createState() => _newHomeScreenState();
}
class _newHomeScreenState extends State<newHomeScreen> {
Directory dir = Directory('/storage/emulated/0');
@override
void initState() {
List <FileSystemEntity> filesBaby = dir.listSync(recursive: true);
filesKittan(filesBaby);
super.initState();
}
filesKittan(List <FileSystemEntity> files){
for (var i = 0; i < files.length; i++) {
if (files[i].absolute.toString()=='/storage/emulated/0/Android/data') {
continue;
}print(files[i].absolute);
}
}
@override
Widget build(BuildContext context) {
return Scaffold();
}
}
您可以使用permission_handler插件来请求存储权限。
// Request storage permission and check if granted
if (await Permission.storage.request().isGranted) {
// Either the permission was already granted before or the user just granted it.
// Access path
}