Cashier 社区
社区致力于提供一个全面的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)、网络连接(各平台兼容)
小票示例 | 标签示例 |
---|---|
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, //监听到的扫码枪内容
})
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()})');
},
);
}
}
开发者共建
欢迎各位开发者参与到我们的社区和平台建设中来,通过开放的API接口和工具库,共同打造一个更加丰富和强大的POS生态系统。
社区内收录的功能库持续维护及更新,欢迎关注和加入。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。