面向科研场景的智能计算与数据工具 · 移动端 App(Flutter 跨平台)
CalcLab 是一款专为理工科学生与科研人员设计的智能计算 App。它把"科学计算 → AI 辅助数据清洗 → 误差校正 → 可视化 → 实验报告导出"整合到一个 App 中,灵感来自卡西欧 fx-991CN X 的自然书写体验,同时扩展了科研工作流所需的全部能力。
- 卡西欧风格自然书写:模拟 fx-991CN X 键盘布局,按分数键出现分子/分母占位符,按积分键出现积分模板
- MathO / LineO 双模式:可一键切换数学符号显示与线性文本
- 智能历史:每一步计算自动持久化到 SQLite,支持命名分组与文字注释
- 基础 + 统计计算:四则运算、三角函数、对数、指数、积分、求和、阶乘;均值、方差、标准差、线性回归
- 复数运算:加减乘除、模、辐角、共轭
- 矩阵运算:加减乘、转置、求逆、行列式
- 方程求解器:一元/多元线性方程组
- 完整统计套件:
- 描述性统计(均值、中位数、众数、方差、标准差、偏度、峰度)
- 概率分布(正态、t、χ²、F、二项、泊松)
- 异常值检测(3σ、Grubbs、IQR)
- 线性/多项式回归
- 直方图、KDE 估计
- 数据清洗、显著数字、不确定度传递
- 单位换算:长度、质量、时间、温度、能量、压力等 20+ 物理量
- 物理常数库:光速 c、普朗克 h、阿伏伽德罗 NA 等 30+ 常用常数
- LaTeX 渲染:使用
flutter_math_fork高质量渲染数学公式 - 报告生成:导出 PDF / PNG / CSV,附计算过程与图表
- AI 公式识别 → 计算:拍照或粘贴 LaTeX 公式,自动转换为表达式并执行计算
- 自然语言 → 计算:「计算 2+3 的阶乘」「求 1,2,3,4,5 的均值」一句话搞定
- 协作分享:一键生成分享码(
CALCLAB:前缀 + base64 编码),跨设备同步历史
即将补充。可通过
flutter run启动后查看。
- Flutter SDK ≥ 3.12
- Dart SDK ≥ 3.12
- Android Studio / Xcode(对应平台)
- Git
# 1. 克隆仓库
git clone https://github.com/soodddd/CalcLab.git
cd CalcLab
# 2. 安装依赖
flutter pub get
# 3. 运行(选择已连接的设备或模拟器)
flutter run
# 4. 构建发布 APK
flutter build apk --release详细安装说明(Windows / macOS / Linux、平台配置、常见问题)请见 docs/INSTALLATION.md。
| 文档 | 说明 |
|---|---|
| docs/INSTALLATION.md | 完整安装与平台配置指南 |
| docs/USER_GUIDE.md | 用户使用手册(功能详解 + 操作步骤) |
| docs/DEVELOPER_GUIDE.md | 开发者指南(架构、模块、扩展) |
| CHANGELOG.md | 版本更新日志 |
| CalcLab-创意方案.md | 产品创意方案(P0/P1/P2 详细定义) |
- 框架:Flutter 3.x(Dart 3.x)
- 状态管理:内置 StatefulWidget + InheritedWidget
- 持久化:SQLite(计算历史)+ SharedPreferences(设置)
- 数学计算:math_expressions(表达式求值)
- 公式渲染:flutter_math_fork(LaTeX → Widget)
- 图表:fl_chart(2D 可视化)
- PDF:pdf + printing
- 图片:image(格式转换、像素操作)
lib/
├── core/ # 业务核心(纯 Dart,可独立复用)
│ ├── calculator/ # 计算引擎
│ │ ├── expression_engine.dart # 表达式求值
│ │ ├── complex.dart # 复数
│ │ ├── matrix.dart # 矩阵
│ │ ├── equation_solver.dart # 方程求解
│ │ ├── latex_to_expression.dart # LaTeX 反向解析
│ │ └── math_renderer.dart # LaTeX 渲染封装
│ ├── statistics/ # 统计模块
│ │ ├── descriptive.dart
│ │ ├── distributions.dart
│ │ ├── outliers.dart
│ │ ├── regression.dart
│ │ ├── histogram.dart
│ │ ├── data_cleaning.dart
│ │ ├── significant_figures.dart
│ │ └── uncertainty.dart
│ ├── units/ # 单位与常数
│ │ ├── unit_converter.dart
│ │ └── physical_constants.dart
│ ├── ai/ # AI 模块(P2)
│ │ ├── formula_recognizer.dart
│ │ ├── nl_query_engine.dart
│ │ ├── local_rule_engine.dart
│ │ └── ai_service.dart
│ ├── share/ # 分享服务(P2)
│ │ └── share_service.dart
│ ├── export/ # 导出
│ │ ├── csv_exporter.dart
│ │ └── image_exporter.dart
│ ├── report/ # 报告生成
│ │ └── report_generator.dart
│ └── storage/ # 持久化
│ ├── history_model.dart
│ └── history_store.dart
├── ui/ # 界面层
│ ├── calculator/ # 主计算器页
│ ├── data/ # 数据清洗页
│ ├── chart/ # 图表页
│ ├── history/ # 历史页
│ ├── units/ # 单位换算页
│ ├── advanced/ # 高级功能页(复数/矩阵/方程)
│ ├── report/ # 报告导出弹窗
│ ├── formula/ # 公式识别页(P2)
│ ├── ai/ # 自然语言查询页(P2)
│ └── share/ # 分享弹窗(P2)
└── main.dart # 入口
test/ # 单元测试(19 个文件,382 用例)
integration_test/ # 集成测试
本项目已通过完整三路验收:
| 验证项 | 结果 |
|---|---|
flutter analyze |
✅ 0 issues |
flutter test |
✅ 382 tests passing |
flutter build apk --debug |
✅ Built app-debug.apk (174MB) |
# 运行全部单元测试
flutter test
# 运行指定文件
flutter test test/expression_engine_test.dart
# 集成测试(需先连接设备/模拟器)
flutter test integration_test/欢迎贡献!流程:
- Fork 本仓库
- 创建特性分支(
git checkout -b feature/amazing-feature) - 提交修改(
git commit -m 'feat: add amazing feature') - 推送到远程(
git push origin feature/amazing-feature) - 创建 Pull Request
提交前请确保:
flutter analyze无 warningflutter test全部通过- 新功能附带单元测试
- 遵循现有代码风格
详细开发指南请见 docs/DEVELOPER_GUIDE.md。
本项目基于 MIT 协议 开源,详见 LICENSE 文件。
MIT License - Copyright (c) 2026 CalcLab Contributors
- 灵感来源:卡西欧 fx-991CN X 自然书写计算器
- Flutter 与 Dart 社区
- 所有开源依赖的作者
- Issues: https://github.com/soodddd/CalcLab/issues
- Discussions: https://github.com/soodddd/CalcLab/discussions
Built with ❤️ by CalcLab Contributors