编写一个很是精美的Flutter Todo-List项目

开头

花费大概一个多月的时间,这个彻底由Flutter编写的Todo-List项目总算初步完成了!如今,它终于要被开源出来了。android

app灵感来源这个地方:ios

iPhone X - Todo Conceptgit

在开始介绍以前,先来简单的看一下真机运行效果吧github

image

介绍

“一日清单”是一个小巧、简洁而又漂亮的app,它能够帮你随手记录平常的各项计划,若是你刚好有写任务计划的习惯,那么它必定很是适合你。web

下面,针对使用者和开发者,我未来分别介绍一次数据库

面向使用者的介绍

丰富的主题选择

app中,能够在主题切换界面选择各类主题颜色进行切换,app自带六个默认主题,这些都是我通过屡次尝试所挑选出来的颜色搭配。同时你也能够选择自定义主题颜色json

image
image

丰富的任务图标

在app中,每项任务都会带有一个图标,而app提供了全部 Flutter 自带的 Material design 风格的图标。这些图标,你一样能够进行任意颜色的自定义缓存

image
image

多样的自定义组合

在app中,有多项其余的操做是你能够进行自定义的bash

好比说主页测滑栏的头部展现内容。固然,还有一些其余的操做,就由你去自行体验了网络

image
image

完成列表

当你完成了一项任务后,这个任务就会从主页转移到完成列表页面,在这里你能够看到任务的一些额外信息

image

那么,对于使用者的介绍就到这里结束

下面就是为广大开发者们介绍的时间了!

面向开发者的介绍

若是你对于Flutter有着浓厚的兴趣而又迟迟没有行动,别犹豫了,快点上车吧!这个项目对于新手司机再适合不过了。

各位开发者们请扶好大家的秀发,下面就我来带领各位参观参观这个项目的内部构造

第三方库

项目中使用了一些很是优秀的第三方库,也特别感谢这些开发者们,让个人发量保持健康

下面就是这些控件的信息

控件 说明
dio 网络请求
shared_preferences 本地存储
provider 状态管理
test 单元测试
carousel_slider 滑动控件
circle_list 环形列表
intl intl语言包
sqflite 本地数据库
flutter_colorpicker 取色框
cached_network_image 图片缓存
image_picker 图片选取
permission_handler 权限申请
path_provider 路径获取
image_crop 图片裁剪
flutter_svg svg解析
package_info 获取package信息
flutter_webview_plugin 网页
pull_to_refresh 上拉加载
photo_view 图片展现
url_launcher 能够用来打开应用商店
open_file 打开文件,android更新下载安装包用

项目架构

项目使用的状态管理框架是 Provider ,而整个项目的架构以下

image

  • View 层用于展现布局,基本上就是各类被 ChangeNotifierProvider 包裹的 StatelessWidget 页面
  • Model层用于处理数据,是继承了 ChangeNotifier 的各类Model类
  • Logic 层不会保存任何数据,只进行逻辑操做

看起来是否是和 Android 中的 MVP 模式很像呢?其实都差很少的,只是名字略有不一样罢了,你也能够就把上面的模式看成是 MVP 模式。

Flutter 能够说是特别适合这种架构模式的,由于视图跟随数据而变化,你基本上不用去关心View,只要去对数据进行操做就行了。

目录结构

项目目录结构以下:

├── android
├── build
├── images
├── intl.sh
├── ios
├── lib
├── local_json
├── pubspec.lock
├── pubspec.yaml
├── res
├── svgs
├── test
└── todo_list.iml

复制代码

先说明一下除了 lib 外的其余目录:

目录 说明
images 用于存放各类图片
local_json 我将Flutter的Icon信息封装成了Json文件存放在这个目录中
res 存放“国际化”插件生成的语言文件
svgs 存放svg格式的图片

而后是 lib 目录

image

目录 说明
config 存放各类配置类,好比Dio请求封装类等
database 存放数据库操做相关类
i10n 存放国际化相关操做的类
items 存放部分List列表的Item类
json 各类网络请求、数据库等相关的json文件
logic 上面提到的,Locig层的目录
model Model层的目录
pages 存放各个页面,是View层的目录
utils 封装好的各️工具类,好比文件操做等
widgets 封装好的各类Widget

结尾

项目建立于6月21日,到现在发布1.0.0版本花了三十多天的时间,虽然我作过不少测试,解决了不少bug,可是时间确实不充裕。纰漏也会在所不免

因此若是使用过程当中遇到什么问题,或者对于项目有什么好的建议,欢迎在app中的反馈界面提出来,也能够在下面留下评论,又或者在github上提issue。

项目的UI设计与后台接口均由我独自一人完成,因此这也是为何时间不够的缘由。不过目前项目中只是包含了两个本身写的接口,后续计划中应该会加入登陆功能,到时候会有不少接口操做。

如有兴趣,请持续关注!

若是你以为这个app不错,或者这个项目有帮助到你,不妨给这个项目一个Star吧。项目后面也会持续保持更新和维护!

附录

app下载

  • Android 下载地址:

image

  • Ios 下载地址:

    目前还没有购买一年99$的ios开发者帐号,这个之后可能会有!

项目地址

ToDo-List

注意:目前项目运行环境是flutter 1.7.8 hotfix的版本,改版本相对以往而言多了一些破坏性修复,
若是你的flutter版本比当前版本低,项目中依赖的某些第三方库将没法运行,到时候请下降他们的版本

下面是在1.5.4版本下须要修改的第三方库

-   flutter_svg: ^0.12.4+2
-   image_crop: ^0.2.1
-   photo_view: ^0.3.3
复制代码

UI设计文件

UI项目地址 密码:Aczh

相关文章
相关标签/搜索