驾考软件实现文档
这份实现文档描述了一个驾考软件的前后端架构划分与 Flutter 异步数据流实践。架构设计后台采用三层结构:Models、Service、Controller。技术栈为 FastAPI + 请求抓取 + BeautifulSoup 解析。前台采用 Flutter 跨平台实现并提供统一 UI。数据流主路径API 层先返回…
整体架构1.软件后台架构 采用标准的三层架构: Models层用于底层获取数据和对应的序列化过程 Service层用于包装数据提供接口 Controller层用于提供良好易用的接口 后台采用Python语言的fastapi框架编写,数据采用request库请求再用beautifulsoup库解析得到(网络爬虫获得)。2.软件前台架构 如下图: img 整个前台采用跨平台方案flutter框架进行编写 界面如下: img数据流传递 从Api网络调用层级请求得到对应的Future数据 。 传递Future到Service层级。 Service根据UI的需求返回对应的 Future<QuestionResponse> ,且封装默认数据(用于不存在的时的数据)。 在UI层的 MyHomePage 主界面点击按钮后,通过await同步得到Future里的 QuestionResponse 数据并将该数据用于构建一个新的 QuestionPage 界面。 QuestionPage 中通过封装好各个方法通过对应的动作来操作数据生成新的界面。比如题目通过更新 _index 下标再 setState 来实现重建,答案则通过 showAnswer 这个bool标志来判断是否需要显示... 由于每次答案都是得到的Future数据,所以可以在界面中使用 FutureBuilder 来实现数据的展示。 坑点: 注意Future数据不能在底层进行await同步,否则界面层进行调用时数据会得不到,所以网络数据最好是直接传毒Future或者Stream。 注意每个异常的处理,否则它将会导致处理数据的底层完全崩溃(异常不被处理将不再往下走,UI界面表现正常,但是数据无),Flutter很多地方都很容易发生异常,比如类型的强制转化不成功将导致异常(如int转Int64),或者空安全将导致异常(采用?则表示断言会告诉你出现错误的地方,而如果采用!则表示一定不为空,则直接抛出异常很难察觉发生在哪)。
正在初始化 WebAssembly 引擎…
首次编译原生模块可能需要数秒
就绪后,页面交互将以接近原生的速度运行