如何修改Flutter printing包中保存为PDF功能的对应UI?
对应UI的实现位置
你要找的打印页面、「保存为PDF」模块的UI实现,都在printing包内部的src/widgets/printing.dart文件中,对应的类是PrintingPdfPreview。PdfPreview类的_print方法触发跳转后,就是打开的这个类的实例页面,包括保存为PDF按钮、打印选项、页面布局的所有逻辑都定义在这个类里。
自定义修改方案
如果你需要修改这部分UI,不需要强行改依赖包源码,可以用以下两种方案实现:
- 方案一:用PdfPreview内置配置参数做基础调整
actions参数可自定义PdfPreview顶部工具栏的所有按钮,替换默认的打印触发逻辑allowPrinting/allowSharing/allowSave参数可直接隐藏不需要的功能按钮pdfFileName参数可指定默认保存的PDF文件名
- 方案二:完全自定义打印页面
你可以自己实现打印触发逻辑,弃用默认的跳转逻辑,示例代码如下:
自定义打印页面里你可以自己实现保存为PDF、分享、选择打印机的所有逻辑,直接调用printing包提供的底层// 先替换PdfPreview的默认actions,自定义打印按钮 PdfPreview( build: (format) => _generatePdf(format, title), actions: [ IconButton( icon: const Icon(Icons.print), onPressed: () async { // 生成PDF二进制数据 final Uint8List pdfBytes = await _generatePdf(PdfPageFormat.a4, title); // 跳转你自己写的自定义打印页面,完全自己控制UI if(context.mounted) { Navigator.push( context, MaterialPageRoute(builder: (context) => MyCustomPrintPage(pdfBytes: pdfBytes)), ); } }, ) ], )Printing.layout、Printing.share、Printing.printPdf方法即可完成对应功能调用。
内容的提问来源于stack exchange,提问作者Jungwon
相关产品推荐
相关产品推荐

