Flutter文件选择插件pfile_picker的使用
Flutter文件选择插件file_picker的使用
一个允许你使用原生文件浏览器选择单个或多个文件,并支持扩展名过滤的包。
当前支持的功能
- 使用操作系统默认的原生选择器
- 支持多种平台(移动端、Web端、桌面端和Flutter GO)
- 通过自定义格式过滤选择文件——可以提供文件扩展名列表(如pdf、svg、zip等)
- 从云文件(如GDrive、Dropbox、iCloud)选择文件
- 单个或多个文件选择
- 不同的默认类型过滤(媒体、图像、视频、音频或任何类型)
- 选择目录
- 如果需要,立即把文件数据加载到内存(
Uint8List
) - 打开保存文件/另存为对话框(让用户指定要保存的驱动器、目录和文件名)
如果你希望在这个包中看到某个功能,请随时提出建议。🎉
兼容性图表
API | Android | iOS | Linux | macOS | Windows | Web |
---|---|---|---|---|---|---|
clearTemporaryFiles() | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
getDirectoryPath() | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
pickFiles() | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
saveFile() | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
更多详细信息,请查看File Picker Wiki或官方API引用。
文档
更多关于安装、设置和使用的细节,请查看File Picker Wiki。
安装
设置
API
常见问题
故障排除
使用
简单的使用示例
单个文件
FilePickerResult? result = await FilePicker.platform.pickFiles();
if (result != null) {
File file = File(result.files.single.path); // 获取选中的文件路径并创建File对象
} else {
// 用户取消了选择
}
多个文件
FilePickerResult? result = await FilePicker.platform.pickFiles(allowMultiple: true);
if (result != null) {
List<File> files = result.paths.map((path) => File(path)).toList(); // 将结果转换为File列表
} else {
// 用户取消了选择
}
多个文件带扩展名过滤
FilePickerResult? result = await FilePicker.platform.pickFiles(
type: FileType.custom, // 自定义文件类型过滤
allowedExtensions: ['jpg', 'pdf', 'doc'], // 允许的扩展名
);
选择目录
String? selectedDirectory = await FilePicker.platform.getDirectoryPath();
if (selectedDirectory == null) {
// 用户取消了选择
}
保存文件/另存为对话框
String? outputFile = await FilePicker.platform.saveFile(
dialogTitle: '请选择输出文件:', // 对话框标题
fileName: 'output-file.pdf', // 默认文件名
);
if (outputFile == null) {
// 用户取消了选择
}
加载结果和文件详情
FilePickerResult? result = await FilePicker.platform.pickFiles();
if (result != null) {
PlatformFile file = result.files.first; // 获取第一个选中的文件
print(file.name); // 输出文件名
print(file.bytes); // 输出文件字节
print(file.size); // 输出文件大小
print(file.extension); // 输出文件扩展名
print(file.path); // 输出文件路径
} else {
// 用户取消了选择
}
在Flutter Web上选择并上传文件到Firebase Storage
FilePickerResult? result = await FilePicker.platform.pickFiles();
if (result != null) {
Uint8List fileBytes = result.files.first.bytes; // 获取文件字节
String fileName = result.files.first.name; // 获取文件名
// 上传文件
await FirebaseStorage.instance.ref('uploads/$fileName').putData(fileBytes);
}
更多关于Flutter文件选择插件pfile_picker的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter文件选择插件pfile_picker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
pfile_picker
是一个用于 Flutter 的文件选择插件,允许用户从设备的文件系统中选择文件。以下是使用 pfile_picker
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 pfile_picker
插件的依赖:
dependencies:
flutter:
sdk: flutter
pfile_picker: ^0.0.1 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在你的 Dart 文件中导入 pfile_picker
插件:
import 'package:pfile_picker/pfile_picker.dart';
3. 使用 pfile_picker
选择文件
你可以使用 pfile_picker
来让用户选择文件。以下是一个简单的示例,展示如何使用 pfile_picker
选择文件并获取文件路径:
import 'package:flutter/material.dart';
import 'package:pfile_picker/pfile_picker.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: FilePickerDemo(),
);
}
}
class FilePickerDemo extends StatefulWidget {
[@override](/user/override)
_FilePickerDemoState createState() => _FilePickerDemoState();
}
class _FilePickerDemoState extends State<FilePickerDemo> {
String? _filePath;
Future<void> _pickFile() async {
try {
FilePickerResult? result = await PFilePicker.platform.pickFiles();
if (result != null) {
setState(() {
_filePath = result.files.single.path;
});
} else {
// 用户取消了选择
setState(() {
_filePath = null;
});
}
} catch (e) {
print("文件选择失败: $e");
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('文件选择示例'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if (_filePath != null)
Text('选择的文件路径: $_filePath')
else
Text('未选择文件'),
SizedBox(height: 20),
ElevatedButton(
onPressed: _pickFile,
child: Text('选择文件'),
),
],
),
),
);
}
}