dart FileSystemException:无法打开文件,path = 'Directory:'/storage/emulated/0/Android/data/

r7s23pms  于 12个月前  发布在  Android
关注(0)|答案(3)|浏览(192)

我正尝试在设备上保存一个PDF,但出现此错误
FileSystemException:无法打开文件,path = 'Directory:'/storage/emulated/0/Android/data/esofos.health/files '/test.pdf
这是生成文档的函数

_generatepdf() async {

//Get external storage directory
final directory = await getExternalStorageDirectory();
//Get directory path
final path = directory;
// Create a new PDF document.
final PdfDocument document = PdfDocument();
// Add a PDF page and draw text.
document.pages.add().graphics.drawString(
    'Hello World!', PdfStandardFont(PdfFontFamily.helvetica, 12),
    brush: PdfSolidBrush(PdfColor(0, 0, 0)),
    bounds: const Rect.fromLTWH(0, 0, 150, 20));

// Save the document.
print(path);
File('$path/test.pdf').writeAsBytes(document.save());
// Dispose the document.
document.dispose();

};

字符串

2vuwiymt

2vuwiymt1#

使用Directorypath属性而不是类的字符串表示。类似于这样:

File('${directory.path}/test.pdf').writeAsBytes(document.save());

字符串

to94eoyn

to94eoyn2#

如果不是一个需要访问设备外部存储的应用程序(例如防病毒应用程序),并且您想在Flutter中下载文件,您可以在安装过程中使用path_provider包通过Android使用您的应用程序特定的目录提供程序。

final response = await http.get(Uri.parse(URL!));
final appDir = await getApplicationDocumentsDirectory();//use this please instead of  getExternalStorageDirectory
File file = File(appDir.path + '/${filename}');
try {
  await file.writeAsBytes(response.bodyBytes);
  print('success');
} catch (e) {
  print(e.toString());
}

字符串

yftpprvb

yftpprvb3#

当检查提供的代码片段时,目录路径的类型转换不正确。我们请求您将下面的代码更改为保存并正确打开pdf文件。

final path = directory!.path;

字符串
请参阅下面的文档链接,
UG:https://help.syncfusion.com/flutter/pdf/getting-started#save-and-open-a-pdf-document-in-mobile

相关问题