printText method

  1. @override
Future<void> printText(
  1. String text, {
  2. IminTextStyle? style,
})
override

Implementation

@override
Future<void> printText(String text, {IminTextStyle? style}) async {
  // 确保 _sdkVersion 已缓存
  if (_sdkVersion == null) {
    await getSdkVersion();
  }
  Map<String, dynamic> arguments = <String, dynamic>{};
  if (style != null) {
    arguments.putIfAbsent('text', () => text);

    if (_is2xSdk) {
      // 2.0 设备带 style 时自动走 printTextBitmap 路径(位图方式)
      // 因为 2.0 的 printText 是 ESC/POS 指令,不认 setTextSize 等位图参数
      if (style.fontSize != null) {
        await setTextBitmapSize(style.fontSize!);
      }
      if (style.typeface != null) {
        await setTextBitmapTypeface(style.typeface!);
      }
      if (style.fontStyle != null) {
        await setTextBitmapStyle(style.fontStyle!);
      }
      if (style.align != null) {
        Map<String, dynamic> bitmapArgs = <String, dynamic>{
          'text': text,
          'align': style.align!.index,
        };
        await methodChannel.invokeMethod<void>(
            'printTextBitmapWithAli', bitmapArgs);
      } else {
        await methodChannel.invokeMethod<void>('printTextBitmap', arguments);
      }
      // 重置位图样式
      if (style.typeface != null) {
        await setTextBitmapTypeface(IminTypeface.typefaceDefault);
      }
      if (style.fontStyle != null) {
        await setTextBitmapStyle(IminFontStyle.normal);
      }
      return;
    }

    // 1.0 设备走原有逻辑
    if (style.align != null) {
      await setAlignment(style.align!);
    }
    if (style.width != null) {
      await setTextWidth(style.width!);
    }
    if (style.fontSize != null) {
      await setTextSize(style.fontSize!);
    }
    if (style.typeface != null) {
      await setTextTypeface(style.typeface!);
    }
    if (style.fontStyle != null) {
      await setTextStyle(style.fontStyle!);
    }
  } else {
    arguments.putIfAbsent('text', () => text);
  }
  await methodChannel.invokeMethod<void>('printText', arguments);
  if (style != null) {
    if (style.align != null) {
      await setAlignment(IminPrintAlign.left);
    }
    if (style.typeface != null) {
      await setTextTypeface(IminTypeface.typefaceDefault);
    }
    if (style.fontStyle != null) {
      await setTextStyle(IminFontStyle.normal);
    }
  }
}