# memo **Repository Path**: zhienchen/memo ## Basic Information - **Project Name**: memo - **Description**: 备忘录-Flutter - **Primary Language**: Dart - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-01-06 - **Last Updated**: 2023-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 一、项目来源及意义 当今社会,工作和生活的双重压力全面侵袭着社会人,工作生活的诸多安排在脑中纠缠复杂,如何有条不紊的处理和安排,备忘录就显得相当重要,其中最为方便的迅捷的要属手机备忘录。移动端的备忘录APP的前景一片大好,当然同时也需考虑现今的两大主流移动端操作系统(Android与IOS)的用户群体。 ### 二、项目需求分析及设计 #### 1、项目需求 (1) 添加备忘事项的详细信息; (2) 设定备忘事项的最后期限; (3) 记录备忘事项完成情况; (4) 删除无用备忘事项; (5) 修改备忘事项内容、最后期限、完成情况; (6) 根据关键字搜索特定备忘事项; (7) APP数据需长久存储; #### 2、系统体系结构 ![img](https://rmt.dogedoge.com/fetch/bitiful/storage/demo/2021-01-08-wps1.jpg?w=1280&fmt=jpg) 图1 - 备忘录APP项目体系结构图 ![img](https://rmt.dogedoge.com/fetch/bitiful/storage/demo/2021-01-08-wps2.jpg?w=1280&fmt=jpg) 图2 - 备忘录APP模块组织 APP主要由四个页面组成:首页、添加页、详情页、搜索页,`task_dao`使用`sqlite`实现APP数据的持久化存储,为视图层提供数据的访问与更新接口。 ### 三、项目实现 #### 1、首页 APP首页负责展示用户添加的全部、未完成和已完成事项,以及左侧侧边栏的天气信息。 首页负责着各个页面的导航功能,首页右上角“+”图标可进入备完事项添加页,左上角可唤出侧边栏,侧边栏中的列表可进入备忘事项搜索页,首页中上的三个tab可切换显示对应类别的备忘事项列表。每个事项列表的左侧展示事项的完成情况,点击图标即可更改,右侧删除图标可删除该事项,点击每个事项主体区域可进入备忘事项详情页。 ![img](https://rmt.dogedoge.com/fetch/bitiful/storage/demo/2021-01-08-wps3.jpg?w=1280&fmt=jpg) ![img](https://rmt.dogedoge.com/fetch/bitiful/storage/demo/2021-01-08-wps4.jpg?w=1280&fmt=jpg) ![img](https://rmt.dogedoge.com/fetch/bitiful/storage/demo/2021-01-08-wps5.jpg?w=1280&fmt=jpg) ![img](https://rmt.dogedoge.com/fetch/bitiful/storage/demo/2021-01-08-wps6.jpg?w=1280&fmt=jpg) 实现:**pages.home_page** #### 2、备忘事项添加页 备忘事项添加页负责完成事项信息的编辑与提交,用户可编辑备忘事项具体内容,在日历组件(已添加中文支持)中选择其截止时间,选择完成情况,最后通过点击右上角的图标提交新备忘事项。 ![img](https://rmt.dogedoge.com/fetch/bitiful/storage/demo/2021-01-08-wps7.jpg?w=1280&fmt=jpg) ![img](https://rmt.dogedoge.com/fetch/bitiful/storage/demo/2021-01-08-wps8.jpg?w=1280&fmt=jpg) 实现:**pages.add_task ** #### 3、备忘事项详情页 用户可进入该页查看某一备忘事项的详细信息,也可更改其中的信息,通过点击右上角的保存图标保存更新信息,编辑细节同备忘事项提交页相似。 ![img](https://rmt.dogedoge.com/fetch/bitiful/storage/demo/2021-01-08-wps9.jpg?w=1280&fmt=jpg) 实现:**pages.detail_task** #### 4、备忘事项搜索页 用户进入该页后可通过输入关键字进行搜索相关的事项,列出的事项支持编辑、删除。 ![img](https://rmt.dogedoge.com/fetch/bitiful/storage/demo/2021-01-08-wps10.jpg?w=1280&fmt=jpg) 实现:**pages.search_task** ### 四、项目运行情况及说明 #### 1、核心代码结构 ``` │ main.dart // 启动类 │ ├model │ task.dart // 实体类 │ ├pages │ add_task.dart // 添加页 │ detail_task.dart // 详情(编辑)页 │ home_page.dart // 首页 │ search_task.dart // 上首页 │ ├service │ task_dao.dart // 数据持久化 │ └utils toast.dart // 提示信息弹窗 weather.dart // 获取天气API信息 ``` #### 2、Flutter项目启动类 此类为Flutter项目标准的启动类,本项目使用Flutter的`MaterialApp`作为入口,配置APP的中文支持,关闭了点击butto时阴影效果,去掉右上角的debug彩带,指定首页类为`HomePage()`。 实现:**main.dart** #### 3、数据持久化实现 `task_dao`使用`sqlite`数据库作为数据持久化方案,选择`sqflite: ^1.3.0`作为数据库ORM框架。实现了对备忘事项的增删改查操作,为视图层类提供接口服务。 实现:**server.task_dao** #### 4、天气信息获取类 weather类 通过网络请求获取天气API信息,选择`http: ^0.12.0+2`作为网络请求库,编码实现`json`转化为`model`,为视图层提供接口服务。 实现:**utils.weather** ### 五、总结 该APP已在本人的日常生活使用,对自己的工作、学习任务规划颇有帮助。同时,在使用的过程中还发现了一些需要改进的地方。例如在APP功能不多,细节之处做的不算好,UI不够美观。未来还可以考虑增加不同类别(如工作、学习、作业、会议等等)的备忘事项,事项信息可支持图片、音频、视频等多种信息,支持账号云备份等等。 ### 六、附录 + 代码托管:https://gitee.com/zhienchen/memo