头图

Cashier 社区

cashier_banner.png

社区致力于提供一个全面的POS解决方案,旨在为零售和餐饮业提供一个无缝、高效的集成方案。我们专注于跨平台兼容性,确保无论是iOS、Android还是Windows系统,用户都能享受到一致的操作界面和功能。

社区地址:https://gitcode.com/cashier

热门解决方案

列举几个已收录的热门解决方案:

1. 双屏收银设备主副屏交互

  • 开源地址:https://gitcode.com/cashier/flutter_subscreen_plugin
  • 应用场景:以常规收银场景为例,POS设备携带双屏幕,客显屏会跟随主屏的下单流程,显示广告、加购及结算等信息内容
  • 能力特性:

    • 该库支持双屏安卓设备,主副屏均使用 flutter 进行开发,提供方法实现双屏间的通信交互
  • 接入示例:
// 在 main.dart 主入口指定主副屏对应的页面 widget:
void main() {
  var defaultRouteName = window.defaultRouteName;
  if ("subMain" == defaultRouteName) {
    runApp(SubApp()); //指定副屏页面
  } else {
    runApp(MainApp()); //指定主屏页面
  }
}
//主屏代码中发送数据给副屏 
SubScreenPlugin.sendMsgToViceScreen ( 
    "data", 
    params: {"randomNum": randomData},
);

//副屏代码中监听主屏发送的数据
SubScreenPlugin.viceStream.listen((event) {
   // event = {"randomNum": randomData}
});

详细使用方式请查阅:https://gitcode.com/cashier/flutter_subscreen_plugin/overview

2. 小票标签打印,无须集成厂家SDK

  • 开源地址:https://gitcode.com/cashier/flutter_printer_plus
  • 应用场景:收银小票、饮品杯贴等打印场景
  • 能力特性:

    • 不嵌入厂商的打印SDK,适配一码多用,直接使用 flutter-widget 进行票据样式开发,拒绝硬编码
    • 支持传输方式:usb连接(Android、Windows)、网络连接(各平台兼容)

image.png
image.png

小票示例标签示例
image.pngimage.png

3. 扫码枪监听,跨平台方案

  • 开源地址:https://gitcode.com/cashier/flutter_scan_gun
  • 应用场景:扫描顾客付款码、加购识别商品条码、核销电子卡券等
  • 能力特性:

    • usb 即插款扫码枪通用方案。(适用各平台,不会触发键盘唤起,不会触发中文乱码)
  • 接入示例
// 提供 `ScanMonitorWidget` 作为父节点,嵌套使用:
ScanMonitorWidget({
    Key? key,
    required ChildBuilder childBuilder, //自己的 widget
    FocusNode? scanNode,
    FocusNode? textFiledNode,
    required void Function(String) onSubmit, //监听到的扫码枪内容
})

image.png

4. 接入电子秤能力

  • 开源地址:https://gitcode.com/liyufengrex/flutter_weigh_serial
  • 应用场景:扫描顾客付款码、加购识别商品条码、核销电子卡券等
  • 能力特性:

    • 该库支持串口方式连接(包括usb转串口)的电子称重设备,兼容 Windows 平台
  • 接入示例
import 'package:flutter_weigh_serial/flutter_weigh_serial.dart';

class _MyAppState extends State<MyApp> {

  late WeighSerialProvider weighSerialProvider;
  
  @override
    void initState() {
      super.initState();
      weighSerialProvider = WeighSerialProvider();
    }

  @override
    void dispose() {
      weighSerialProvider.close();  //退出页面时断开连接
      super.dispose();
    }

  ...
  // 连接称重设备的方法如下:
  void _connectWeigh() {
    weighSerialProvider.findAndConnect().then(
      (success) {
        if (success) {
          //搜索到称重设备并连接成功
          weighSerialProvider.weighListener?.listen(
            (data) {
              // 获取到称重数据,返回数据模型 *WeighResult*
              log('称重数据 - ${data.toMap().toString()}');
            },
          );
        } else {
          Fluttertoast.showToast(msg: '称重设备连接失败');
        }
      },
      onError: (e) {
        Fluttertoast.showToast(msg: '称重设备连接失败(${e.toString()})');
      },
    );
  }
}

image.png

开发者共建

欢迎各位开发者参与到我们的社区和平台建设中来,通过开放的API接口和工具库,共同打造一个更加丰富和强大的POS生态系统。

社区内收录的功能库持续维护及更新,欢迎关注和加入。

社区地址:https://gitcode.com/cashier

MEITU_20241121_133058487 (1).jpg


李小轰
6 声望0 粉丝

有趣的灵魂,拒绝沉默。目前从事 『Android 』、『Flutter 』、『HarmonyOS 』 开发,喜欢尝试各种新玩意儿,重度强迫症(匠心精神),乐于分享!OpenHarmony 三方库贡献者 、 pub.dev 三方库维护者 。