我想使用 Flutter 访问 Windows 上的特定文件夹。
Flutter 有一个名为 File Picker 的包,但我只能使用这个包选择文件。
还有win32包,但似乎技术性太强,我看不懂。
例如我有一个文件夹 -> C: est。
我需要使用 flutter 查看此文件夹(C: est)中的所有文件,最好以 listView 或表格格式查看。
我该怎么做?
谢谢你
如果您只想列出目标文件夹中存在的所有文件名,则无需使用
file_picker
包即可实现。有 dart:io
可以满足这种需求。
导入
dart:io
将此导入放在代码顶部
import 'dart:io';
首先创建这个异步函数
getDirList()
Future<List> getDirList() async {
// Initiate your directory target.
//
// Make sure your path is correct.
final Directory dir = Directory('your path');
// Create variable to insert the files path
List files = [];
// Retrieve files path that existed in your directory target.
//
// fyi: [dir.list()] using stream not future.
await for (var entity in dir.list()) {
// Original value of [entity.path] is String of full path of file, so i manipulate
// String to only show the name of the file.
//
// If you want to the original value just use:
// `entity.path`
// That variable will returned a String.
files.add(entity.path.split('/').last);
}
return files;
}
然后使用
FutureBuilder
: 应用异步函数
FutureBuilder<List>(
future: getDirList(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Column(
children: snapshot.data!
.map((value) => Padding(
padding: const EdgeInsets.all(16),
child: Text('- $value'),
))
.toList(),
);
} else if (snapshot.hasError) {
return Center(child: Text('error: ${snapshot.error}'));
}
return const Center(child: CircularProgressIndicator());
},
)
我使用
来显示数据,如果你想以Column
或ListView
显示,你可以修改它Table
补充
如果您想检查您的文件夹是否正确(存在),您可以通过以下方式检查:
final bool isDirExist = await dir.exists();
print ('is directory exist $isDirExist');
如果存在则返回
true
。