You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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文件名
  • 方案二:完全自定义打印页面
    你可以自己实现打印触发逻辑,弃用默认的跳转逻辑,示例代码如下:
    // 先替换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)),
              );
            }
          },
        )
      ],
    )
    
    自定义打印页面里你可以自己实现保存为PDF、分享、选择打印机的所有逻辑,直接调用printing包提供的底层Printing.layout、Printing.share、Printing.printPdf方法即可完成对应功能调用。

内容的提问来源于stack exchange,提问作者Jungwon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:24:03