Flutter图片打印生成工具插件print_image_generate_tool的使用

Flutter图片打印生成工具插件print_image_generate_tool的使用

flutter pos 终端应用中打印场景的工具库

提供能力将 widget 视图转换成 Uint8List 数据,内部维护队列,按加入顺序生成返回图像数据。

使用方法

1. 初始化打印图层

在页面根节点下将打印图层 PrintImageGenerateWidget 初始化,例如:

MaterialApp(
    onGenerateTitle: (context) => '打印测试',
    home: Scaffold(
    body: PrintImageGenerateWidget(
       contentBuilder: (context) {
       return const HomePage();
       },
       onPictureGenerated: _onPictureGenerated,  // 下面说明
     ),
   ),
)

要保证将 PrintImageGenerateWidget 节点位于所有页面图层的最上层。

2. 接收打印图像结果

如上 PrintImageGenerateWidget 中需要注入 onPictureGenerated 方法,接收打印图像结果

// 打印图层生成成功
Future<void> _onPictureGenerated(PicGenerateResult data) async {
    // widget生成的图像结果
    final imageBytes = data.image;
    // 打印任务信息
    final printTask = data.taskItem;
    // 打印票据类型(标签、小票)
    final printTypeEnum = printTask.printTypeEnum;
    // 这里可以添加具体的打印逻辑
}

3. 将 widget 生成图层数据

注意:传入的 tempWidget 必须实现或基础父类 ATempWidget

/// 生成打印的模板 Widget 需要继承这个类
mixin ATempWidget {
  // 生成图片的缩放倍数
  double get pixelRatio => 1;

  // 需要生成的票据像素宽度
  int get pixelPagerWidth;

  // 需要生成的票据像素高度
  int get pixelPagerHeight => -1;
}

生成打印图层任务,指定任务类型为标签

PictureGeneratorProvider.instance.addPicGeneratorTask(
  PicGenerateTask<PrinterInfo>(
    tempWidget: child() as ATempWidget,
    printTypeEnum: PrintTypeEnum.label,
    params: printerInfo,
  ),
);

生成打印图层任务,指定任务类型为小票

PictureGeneratorProvider.instance.addPicGeneratorTask(
  PicGenerateTask<PrinterInfo>(
    tempWidget: child() as ATempWidget,
    printTypeEnum: PrintTypeEnum.receipt,
    params: printerInfo,
  ),
);

更多关于Flutter图片打印生成工具插件print_image_generate_tool的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter图片打印生成工具插件print_image_generate_tool的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用Flutter中的print_image_generate_tool插件的示例代码。假设你已经将print_image_generate_tool插件添加到了你的pubspec.yaml文件中,并且已经运行了flutter pub get

首先,确保你的pubspec.yaml中包含如下依赖:

dependencies:
  flutter:
    sdk: flutter
  print_image_generate_tool: ^最新版本号  # 请替换为实际的最新版本号

然后,你可以在你的Flutter项目中按照以下步骤使用print_image_generate_tool插件来生成并打印图片。

1. 导入必要的包

在你的Dart文件中导入print_image_generate_tool包:

import 'package:flutter/material.dart';
import 'package:print_image_generate_tool/print_image_generate_tool.dart';

2. 创建一个生成并打印图片的函数

这里是一个示例函数,它使用print_image_generate_tool生成一张图片并打印出来:

Future<void> generateAndPrintImage() async {
  // 创建一个位图数据(这里只是一个示例,你可以使用你自己的图片数据)
  final Uint8List imageBytes = Uint8List.fromList(List.filled(1024 * 1024, 255)); // 示例数据,实际应为有效的图片字节数据

  // 使用print_image_generate_tool生成图片并打印
  final PrintResult result = await PrintImageGenerateTool.printImage(
    imageBytes: imageBytes,
    width: 500, // 图片宽度
    height: 500, // 图片高度
    printerOptions: PrinterOptions(
      copies: 1, // 打印份数
      duplex: Duplex.simplex, // 单面/双面打印
      color: true, // 是否彩色打印
      mediaSize: PaperSize.a4, // 纸张大小
      orientation: Orientation.portrait, // 纸张方向
    ),
  );

  // 处理打印结果
  if (result.success) {
    print("打印成功!");
  } else {
    print("打印失败:${result.error}");
  }
}

3. 在UI中调用该函数

你可以在Flutter的UI中添加一个按钮来触发图片生成和打印功能:

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('图片打印生成工具示例'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: generateAndPrintImage,
            child: Text('生成并打印图片'),
          ),
        ),
      ),
    );
  }
}

注意事项

  1. 图片数据:上面的示例中使用了无效的Uint8List数据。在实际应用中,你需要使用有效的图片字节数据。这通常意味着你需要从文件、网络或其他来源加载图片数据。

  2. 插件权限:确保你的应用有权限访问打印设备和存储(如果图片数据存储在设备上)。

  3. 平台支持:检查print_image_generate_tool插件是否支持你的目标平台(如Android、iOS等)。

  4. 错误处理:在实际应用中,你可能需要更详细的错误处理逻辑来应对不同的打印失败情况。

以上代码提供了一个基本的框架,展示了如何在Flutter中使用print_image_generate_tool插件来生成并打印图片。根据具体需求,你可能需要调整代码以适应不同的场景。

回到顶部