You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
徐振升 06688c6a93 refactor : 使用清晰架构增加项目的可维护性与灵活性 12 hours ago
.vscode refactor : DioProvider 2 months ago
android feat : 程序自更新 3 weeks ago
assets refactor : 登录页 2 months ago
ios 问题检查系统 2 months ago
lib refactor : 使用清晰架构增加项目的可维护性与灵活性 12 hours ago
linux feat : 自动打包工具 3 weeks ago
macos feat : 自动打包工具 3 weeks ago
web 问题检查系统 2 months ago
windows feat : 自动打包工具 3 weeks ago
.gitignore 问题检查系统 2 months ago
.metadata 问题检查系统 2 months ago
README.md feat : 程序自更新 3 weeks ago
analysis_options.yaml feat : 同步服务器数据到本地 1 month ago
build.bat feat : 新增批处理,优化包体积到9m 3 weeks ago
build_flutter_app.dart feat : 新增批处理,优化包体积到9m 3 weeks ago
devtools_options.yaml 重构代码 2 months ago
pubspec.lock feat : 企业列表UI 20 hours ago
pubspec.yaml feat : 企业列表UI 20 hours ago

README.md

项目名称:现场问题检查系统

核心功能

本系统旨在为现场工作人员提供一个高效的问题记录与管理平台,支持离线操作和数据同步。

1.1 在线/离线登录 需求: 用户能够使用用户名和密码进行登录。如果设备曾成功登录过,即使在离线状态下也能进入应用。

技术实现思路:

在线: 登录成功后,从服务器获取用户身份信息和Token。

离线: 将登录凭证(如Token)安全地存储在本地数据库中,启动时优先检查本地凭证。如果凭证有效,直接进入主界面。

1.2 问题数据离线增删改查 需求: 用户在离线状态下能完整地创建、编辑、删除和查询问题数据。

技术实现思路:

本地数据库: 使用 SQFlite 作为本地数据库。

数据结构: 设计清晰的数据库表结构,包含问题描述、图片路径、创建时间、状态(如“待上传”)等字段。

操作: 所有的增删改查操作都直接在本地数据库上进行。

1.3 问题数据上传/下载 需求: 在有网络连接时,系统能自动或手动将本地数据同步到服务器,并从服务器下载最新数据。

技术实现思路:

上传队列: 在本地数据库中新增一个“待上传”队列。当用户离线进行增删改操作时,将这些操作记录在队列中。

智能同步: 当网络恢复时,按顺序处理上传队列中的任务。使用统一的 HTTP/Dio 拦截器处理身份验证和错误重试。

差异化下载: 从服务器下载数据时,只拉取自上次同步以来有更新的数据,避免全量下载。

  1. 系统架构:MVVM + 仓库模式 此架构能有效分离关注点,提高代码的可测试性和可维护性。

模型 (Model): 负责数据管理。定义问题数据的实体类,如 Problem。

视图模型 (ViewModel): 作为视图和模型之间的桥梁。

负责业务逻辑、状态管理和数据处理。

通过 GetX 管理 UI 状态,并与视图进行绑定。

使用 GetX 的依赖注入(DI)管理 Repository 实例。

视图 (View): 负责 UI 展示。

使用 Flutter Widgets 构建界面。

通过 GetX 提供的响应式组件(如 Obx),监听 ViewModel 中的状态变化并自动更新 UI。

仓库 (Repository): 负责统一数据源(本地数据库和网络)。

封装数据访问逻辑,向 ViewModel 提供统一的数据接口。

根据网络状态,决定是从 SQFlite 获取数据还是从网络请求。

  1. 技术栈 Flutter SDK: 跨平台应用开发框架。

GetX:

状态管理: 轻量高效,用于管理 UI 状态。

路由管理: 简化页面跳转。

依赖注入: 方便管理和提供单例服务(如 Repository)。

SQFlite: 本地数据库,用于离线数据存储。

Image Picker: 用于从图库或相机选择图片。

HTTP/Dio: 网络请求库。推荐使用 Dio,因为它提供了更强大的拦截器、表单数据处理和错误处理功能。