这似乎是一个不会持续很长时间的问题,但我正在寻找一个最终的解决方案,以便在包括桌面在内的所有平台上打开一个本地文件选择器,而不需要安装go-flutter。
目前我正在使用Flutter.dev的file_selector插件,它适用于web和macOS (我还没有在windows/linux上进行测试)。当我试图在iOS模拟器上运行它时,我得到一个错误。
MissingPluginException(No implementation found for method openFile on channel plugins.flutter.io/file_selector)
我猜这是因为它不支持iOS,也许这个插件只适用于桌面和web。
我也看到了file_picker plugin,但它需要在桌面上安装go-flutter才能工作。我宁愿直接在Android studio中进行热重载/构建,而不需要go-flutter命令来运行桌面模拟。
有没有基本上结合这两件事的一站式解决方案?我对Flutter还很陌生,所以可能我错过了一种非常简单的方式来使用一个或另一个库,这取决于带有某种条件的平台?走这条路看起来有点混乱,但现在可以用了。
我正在寻找的另一个答案是以一种更简单的方式使用桌面file_picker插件的好解决方案,比如如何无缝使用go-flutter。
发布于 2021-08-12 21:41:47
import 'dart:io' show Platform;
import 'package:flutter/foundation.dart' show kIsWeb;
if (Platform.isAndroid || Platform.isIOS)) {
// use file_picker plugin
FilePickerResult? result = await FilePicker.platform.pickFiles();
if(result != null) {
File file = File(result.files.single.path);
} else {
// User canceled the picker
}
} else if(kIsWeb) {
// use file_selector plugin
final typeGroup = XTypeGroup(label: 'images', extensions: ['jpg',
'png']);
final file = await openFile(acceptedTypeGroups: [typeGroup]);
} else {
// use file_picker_desktop
try {
final result = await pickFiles(
allowMultiple: false,
);
if (result != null) {
File file = File(result.files.single.path);
} else {
// User canceled the picker
}
} catch (e) {
print(e);
}
}https://stackoverflow.com/questions/68750256
复制相似问题