Flutter实现一个小说阅读APP(可能是目前交互最好的阅读APP)?

25,057 阅读2分钟

项目地址: Flutter_Novel
顺便给这个 Md2All 点个赞,这效果有点东西唉……

项目重构ing,不定时发布文章公开进度

前言

如果想自己编译,建议flutter环境使用最新的stable分支(我目前使用的是stable分支的1.12.13+hotfix.5),由于项目中使用了较新的技术点,所以如果是过老的版本的环境应该会因为找不到类或者方法而报错。

另外……ios因为没设备,所以也不知道具体是否正常,讲道理应该没啥问题的。plugin,代码这块也是基本的flutter代码,应该没什么特殊的…………

本人也是在不断摸索学习flutter中,所以这个项目中存在的错误或者低性能部分,还请不吝提issue或者pr。

总之,欢迎pr、fork、star,或者在issue区中提出有意义的意见或者建议。

顺便提一下:

多图流量警告!

效果

先公布一下现在可以公开的情报(为了体现性能优化成果,在阅读页开启Performance Overlay界面):

书库页

书库-无书
书库-无书

书库-有书
书库-有书


搜索页

搜索页
搜索页


详情介绍页

详情页
详情页


阅读页

设置-仿真翻页
设置-仿真翻页

章节内页面跳转
章节内页面跳转

上一章和下一章
上一章和下一章

目录页
目录页

设置-字体大小
设置-字体大小

设置-行高
设置-行高

设置-覆盖翻页
设置-覆盖翻页

设置-滚动翻页
设置-滚动翻页

设置-背景
设置-背景

核心技术点(非UI部分)概括

整体架构:

  1. 基于provider的实现的mvvm思想的模板框架


书库页

  1. 数据库sqflite使用


搜索页

  1. rxdart的一种小小应用


详情介绍页

  1. 可以折叠展开的text
  2. 主题色随图片


阅读页(核心)

  1. Flutter中textPainter的使用,包含绘制、测量等.
  2. canvas的使用.
  3. 三种翻页动画(左右仿真翻页、上下滑动翻页、覆盖翻页)的实现.
  4. 离线缓存
  5. sharedPreference、屏幕亮度等用户设置内容。
  6. stream的一种小小应用
  7. dart中协程以及flutter的isolate的一些使用方法
  8. 一种超低耦合的listView按index跳转的方式(目录页)

里程碑(暂定)

未实现的部分:

  1. 排行榜
  2. 书评
  3. 下载
  4. 本地书籍导入、wifi传书等其他导入书籍方式
  5. 非txt格式的数据支持
  6. 网页抓包处理解析(用于解析网页而非接口获取的书籍信息)
  7. 音量键翻页
  8. 语言读书,自动翻页

特别感谢

flutter_app(追书神器的接口以及介绍页来自于这个项目)
BookPage(阅读页的实现思路参考自这个项目)