ByteNoteByteNote
开源 Flutter POS:小店点餐结账怎么自己跑

字节笔记本

2026年8月29日

开源 Flutter POS:小店点餐结账怎么自己跑

API中转
¥120

小餐馆要一套点餐、库存、收银、蓝牙出单,商业 POS 又贵又爱往云上塞数据。flutter-pos-system 是 Apache 2.0 的 Flutter 应用,订单和菜单默认躺在你自己的手机里,没网也能卖。作者吕学洲维护,仓库大约 600 star,最近一版是 2026 年 8 月 7 日的 v2.12.0。

店里直接用可以去 Google Play 装 Android 包。想改功能或自己编译,下面按官方文档和仓库现状写。

店里实际能做哪些事

菜单能按分类改价、改成本、挂食材。每点一单,对应库存会扣。库存不够会提醒。点餐带排队和金额速算,结账走收银机,用来对当日现金。顾客侧可以记外带/内用、年龄、性别这类维度,后面做图表。出单走蓝牙打印机。v2.12.0 起小票格式能自己改。

备份不走作者的服务器。Transit 能把订单、菜单导出成 CSV 或 Excel;也可以授权 Google 账号,把表推到 Google 表格。分析页能自己拼折线、饼图。

三条设计原则写在文档里:离线能用、客单不默认上传、界面跟大屏。中文界面目前主要是繁体(zh-TW)。

iOS 官方文档还写着「再等等」。2026 年 5 月的更新加过 iOS 工程配置和权限,但商店下载口仍然只有 Android。

数据放哪

业务对象分两套存储:

  • 订单这类流水进 sqflite(SQLite)。
  • 菜单、库存这种变动大的结构进 sembast(本机 NoSQL)。

对应代码在 lib/services/database 管 SQLite 和迁移,storage 管 sembast。仓库层(lib/models/repository/)负责购物车、菜单、库存、收银、出单,UI 不直接碰文件。

应用里有 Firebase Analytics / Crashlytics / Auth。这是客户端崩溃和用量统计。客单不会因此同步到作者那边。真正离开本机的业务数据,只有你主动做的 Google 表格备份或文件导出。

本地把工程跑起来

pubspec.yaml 把 Flutter 钉在 >=3.41.0 <3.42.0,Dart >=3.11.0 <4.0.0。版本不对会直接解析失败,先对一下 flutter --version

作者把蓝牙打印等私有辅助放在 flutter-pos-packages。本地开发要先换成 mock,避免去拉那份私有依赖:

bash
git clone https://github.com/evan361425/flutter-pos-system.git
cd flutter-pos-system
sed -i.bk 's/flutter-pos-packages$/flutter-pos-packages-mock/' pubspec.yaml
rm -f pubspec.yaml.bk
flutter pub get

只想跑测试的话:

bash
make mock
make test

要打 Android 包,还得自己准备三样:android/app/*.jks 签名、android/key.properties、以及 Firebase 的 google-services.json。密钥指纹要写进 Firebase 项目,再把 debug 配置填进 lib/firebase_compatible_options.dart。文档给了一套 keytool 示例,正式上架请换成你自己的密码和 dname,别用文档里的占位口令。

贡献流程是常见的 fork → flutter pub getdart run build_runner buildflutter test → 开 PR。文档和站点在 gh-pages 分支。

代码怎么拆

对想改功能的人,目录比 README 有用:

目录干什么
lib/ui/order/点餐、购物车、结账
lib/ui/menu/分类和商品
lib/ui/stock/库存、分量、补货
lib/ui/cashier/收银、找零
lib/ui/analysis/图表
lib/models/商品、食材、订单等对象,只跟 repository / service 说话
lib/components/对话框、可排序列表这些通用壳
lib/settings/主题、语言、点餐时是否亮屏

路由在 lib/routes.dart,状态用 provider。入门可以先从改菜单字段或加一种顾客选项开始,这两处模型边界清楚,也不容易把收银账算乱。

更细的树状说明在官方 Architecture 页,繁中入口是 POS 系統文档

适合谁、不适合谁

适合:小店先用起来、不想月付云 POS;或者拿来当 Flutter 中型应用样本(有库存、有钱、有外设)。

不适合:连锁、要云端多终端实时对账、要现成的员工权限和税务申报。那些得自己在 repository 和 sync 层加。蓝牙打印机型号以应用内支持列表为准,生僻机子要在设置里手选类型。

店里用:Play 安装,先建分类和商品,把食材挂上库存,再配对打印机打一张测试小票。改代码:锁 Flutter 3.41,换 mock 包,flutter pub get,从 lib/ui/menu/ 看起。

分享: