Flutter Windows端printing包printPdf报MissingPluginException问题
核心报错
MissingPluginException(No implementation found for method printPdf on channel net.nfet.printing)
问题场景
开发面向门店的Windows桌面端POS应用,需要实现文档、条码打印功能,已使用pdf包完成PDF生成,在Windows平台安装、调用printing包时触发上述报错。
按照官方文档说明,需要提前在CMake配置中添加如下代码:
set(PDFIUM_VERSION "4929" CACHE STRING "" FORCE) set(PDFIUM_ARCH "x64" CACHE STRING "" FORCE)
实际配置过程中遇到以下问题:
- Flutter项目windows目录下存在3个同名
CMakeLists.txt文件,路径分别为windows\CMakeLists.txt、windows\runner\CMakeLists.txt、windows\flutter\CMakeLists.txt,无法确定配置的正确写入位置 - 尝试将配置分别添加到上述3个文件中,均未生效
- 运行代码调用打印功能时始终抛出开头提到的MissingPluginException异常
- 目标需求为实现已生成PDF的正常打印
解决步骤
- 确定配置写入位置:上述PDFIUM版本、架构配置必须写入项目根目录下的
windows/CMakeLists.txt文件最顶部,即所有Flutter相关引入、子目录添加逻辑之前,写入子目录下的CMake文件、或者写在该文件其他逻辑段之后,都不会被printing插件的构建脚本识别。 - 清理全量构建缓存:配置修改完成后,不能直接热重载/热重启,必须执行以下命令清理旧构建产物:
关闭所有正在运行的调试进程、Visual Studio CMake缓存进程后,重新全量编译运行Windows端程序。flutter clean flutter pub get - 兼容性校验:
- 确认Windows端编译目标架构为x64,printing插件Windows端依赖的PDFIUM暂不支持x86架构
- 确认
pubspec.yaml中使用的printing版本与当前Flutter稳定版本兼容,不要使用过旧的插件版本 - 首次全量编译时保持网络通畅,构建流程会自动拉取对应版本的PDFIUM二进制依赖,依赖拉取失败也会导致插件无法正常注册,触发通道找不到实现的报错。
内容的提问来源于stack exchange,提问作者Uktamjon
相关产品推荐
相关产品推荐

