Cashier 社区:一站式POS跨平台功能方案收录

Cashier 社区

image.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.png
image.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

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容