在我的flutter应用程序中,我可以创建一个pdf文件,然后我想将其保存在下载文件夹中。我试图用path_provider包来实现这个目标,但我不能。
这是flutter的cookbook中的示例代码,如果我使用它,我不会得到任何错误,但我也找不到文件。
final directory = await getApplicationDocumentsDirectory();
File file2 = File("${directory.path}/test.txt");
await file2.writeAsString('TEST ONE');
正确的做法是什么?
4条答案
按热度按时间lskq00tm1#
要查找正确的路径,请使用ext_storage。您将需要此权限
在Android 10上,您需要在清单中包含此信息
在Android 11上,请使用此选项
请记住使用permission_handler请求它们
我给你我的代码:
sr4lhrrt2#
您需要
getExternalStorageDirectories
。您可以传递一个参数来具体指定下载:如果使用null safety,则不需要bang运算符:
rwqw0loc3#
Android 11改变了很多东西,它强调了作用域存储。虽然/storage/emulated/0/Android/data/com.my.app/files是由path_provider pkg指定的目录路径之一,但如果只使用任何普通的文件应用程序(Google Files、Samsung My Files等),你将无法查看保存在/storage/emulated/0/Android/data/com.my.app/files中的文件。
解决这个问题的一个方法(尽管它只适用于Android)是指定“通用”下载文件夹,如下所示。
如果您将试图保存任何文件写入该目录,它将显示在任何标准文件管理器应用程序的Downloads文件夹中,而不仅仅是path_provider pkg提供的特定于应用程序的目录。
下面是我正在开发的一个应用程序的一些测试代码,我将用户生成的QR码保存到用户的设备上。
olmpazwi4#
对于下载文件夹中的下载文件,下面是一些示例:
有关库的更多详细信息,请单击此处:https://pub.dev/packages/document_file_save_plus