Invoice Ninja
Invoice Ninja 的客户端应用程序。
桌面应用
移动应用
目录
设置应用程序
-
初始化配置文件
cp lib/.env.dart.example lib/.env.dart
-
支持在Android上运行未签名代码
cp android/app/build.gradle.dev android/app/build.gradle
-
运行应用程序
flutter run
注意:如果你没有设置Invoice Ninja后端,可以使用以下凭据测试应用程序:
- 邮箱:
demo@invoiceninja.com
- 密码:
Password0
- 网址:
demo.invoiceninja.com
移除非自由开源软件代码的步骤
cp android/build.gradle.foss android/build.gradle
cp lib/utils/oauth.dart.foss lib/utils/oauth.dart
cp lib/utils/app_review.dart.foss lib/utils/app_review.dart
cp lib/ui/app/upgrade_dialog.dart.foss lib/ui/app/upgrade_dialog.dart
cp lib/ui/app/pinput.dart.foss lib/ui/app/pinput.dart
cp android/app/src/main/AndroidManifest.foss.xml android/app/src/main/AndroidManifest.xml
cp pubspec.foss.yaml pubspec.yaml
rm pubspec.lock
应用程序架构
该应用程序是使用 Flutter Redux Starter 创建的。
架构基于以下两个项目:
文件结构
项目结构的高级概览:
lib/ # 根包
|
├─ data/ # 数据处理
│ ├─ mock/ # 用于测试的样本
│ ├─ models/ # 表示数据的对象
│ ├─ repositories/ # 数据源
|
├─ redux/ # 管理应用程序状态
│ ├─ component/ # 应用程序构建块
│ ├─ actions # 更新应用程序状态的方法
| ├─ middleware # 响应操作,在reducer之前执行
| ├─ reducer # 拦截操作,负责更新状态
| ├─ selectors # 从状态读取数据,查询"状态数据库"
| ├─ state # 位于widget层次结构顶部的不可变对象
|
├─ ui/ # 应用程序视图
│ ├─ component/ # 不同组件的视图
│ ├─ view/ # 组件的通用视图
│ ├─ edit/ # 更改视图字段的值
|
├─ utils/ # 实用工具类
ui和redux文件夹包含配对的组件。 简单来说,你会在ui和redux文件夹中都找到一个"auth"文件夹。
有关Redux架构的更多信息
博客文章
代码生成
- 运行
flutter packages pub run build_runner build --delete-conflicting-outputs
重新生成模型文件。它还会删除旧的生成文件以避免冲突。
测试
- 运行
flutter drive --target=test_driver/all_it.dart
执行测试
致谢
https://github.com/invoiceninja/invoiceninja#credits
贡献
我们欢迎贡献!如果你想参与开发,请加入我们的 Slack群组 或 Discord服务器。