视频Demo

frc 0b81ba837bc806c8ffe50fce5fe78ad1 - Flutter豆瓣客户端,诚心开源
全项目首页概览
frc fb575690ad8feb14dd44d7f5599040b8 - Flutter豆瓣客户端,诚心开源
Mar-10-2019 14-12-55.gif
frc 20ec11291c1ce50054966def23ef7cc7 - Flutter豆瓣客户端,诚心开源
Mar-10-2019 14-13-11.gif
frc 2b3c3166fa6cfe9178da7fdca2828d67 - Flutter豆瓣客户端,诚心开源
Mar-10-2019 14-17-38.gif
frc a1dc02da7519fec8d77b49fbe274c237 - Flutter豆瓣客户端,诚心开源
Mar-10-2019 14-17-48.gif
frc d1dc13be690748a2349f504bf9004f41 - Flutter豆瓣客户端,诚心开源
Mar-10-2019 14-18-03.gif
frc d99ab94928ca3edfa19f8517f6b462e1 - Flutter豆瓣客户端,诚心开源
Mar-10-2019 14-18-12.gif
frc 96cc8fa0e8d441fa487253899d6bea59 - Flutter豆瓣客户端,诚心开源
Mar-10-2019 14-18-23.gif
frc 2541131d1c4f5a964b3822004dd3c8ff - Flutter豆瓣客户端,诚心开源
Mar-10-2019 14-30-58.gif
frc 19fb9608dc6ff10b5da0a64766192a05 - Flutter豆瓣客户端,诚心开源
Mar-10-2019 14-31-13.gif
frc 8e4554208b50914eb25600e5dff5900d - Flutter豆瓣客户端,诚心开源
Mar-10-2019 14-32-29.gif
frc 1e67c999b7c2232d35b9532001a87ebe - Flutter豆瓣客户端,诚心开源
Mar-10-2019 14-32-41.gif
frc ae958fd40285aaa766763941b807e9be - Flutter豆瓣客户端,诚心开源
Mar-10-2019 14-33-02.gif

前言

终于,终于写完了。这个项目是我从年前开始写的,然后今年过年没有回家,除了大年三十没有提交代码,有空余时间就一直在写,过完年大年初一就开始写了~~。功夫不负有心人,终于,现在来看是一个成熟度较为满意的作品,才敢拿出来跟大家一起分享。

缘起

忘记关注哪个公众号了,真正接触flutter是18年,算起来是比较晚的了。不过勤能补拙,现在也来的及,只要想学就不晚。如果学习一个知识点,就写个demo就以为掌握了,大错特错。我们更多的是从实际出发利用知识点,完成实际任务。将众多Widget灵活使用,不断的碰壁,解决bug,最终就能够真正的理解这个Widget以及相关知识点。所以,我没有写个demo就完事了。我直接拿一个APP,盘它就好了。

首先说一下,为啥仿豆瓣。因为,总体来看(个人感触,勿喷),豆瓣APP中的UI涉及到的动画、排版,交互等等都是十分优秀的,最重要的是涉及到各种各样的UI,对于学习flutter是一个很好的平台。(还有一点:豆瓣有一些公开的api,这个最重要)其实对于一个Widget的功能点,我们都可以娓娓道来,但是将众多Widget糅合到一起还是有一定的挑战的。挑战意味着机会,意味着能力。

项目能学到什么

定了一个小目标:看到的UI,100%还原。我就以这个为基本线,最终达到了差不多90%的还原吧。

  • 仿了豆瓣APP的90%的页面,UI的样式、页面搭配等等,争取到了90%还原。

  • 整个项目涉及到Flutter 90%的基础Widget,以及各种情景的搭配组合。

某些flutter没有的Widget,这就需要我自己去找了,但是网上没有合适的轮子。我就直接改源码了。例如:

  • 魔改源码实现首页头部特效

    frc 3bc3a862bc4722a1f3d5bcd6b1193d31 - Flutter豆瓣客户端,诚心开源
    header.gif

网上没有类似的,不过flutter原生有类似的。所以就翻源码改。最终实现了一样的效果。这番改动,使得我对flutterAppBar以及flutter的动画有了更深的认识。

  • 打造100%抽屉
frc 1fc571cec8c48ca75afcabda8b864aa4 - Flutter豆瓣客户端,诚心开源
drawer.gif

flutter中是没有类似的Widget。所以,我只能自己干。为了实现100%还原这个页面,耗费了我好几个晚上的时间,最终成功了。经过这个洗礼,加深了我对Animation,ScrollNotificationListener,GestureRecognizer等的理解。

  • 影视详情动态背景色

在豆瓣APP中,最吸引我之一的就是豆瓣APP的影视详情的背景色是动态的。每个背景色均是不同的。当然,我这里也实现了。

frc 6fc7d5d3c95cda7c3b823e3c9a2ad5df - Flutter豆瓣客户端,诚心开源
dymiccolor.gif

详情的颜色根据海报的主题变动

关于这些,我就是举个简单的例子。有些东西,要强迫自己一下。或许收获到更多惊喜。这两个比较难的组件,我在源码中关于思路以及方法都有注释,大家可以去看下。

目的

我写这个项目的初衷,就是跟大家分享知识的。所以,今天我会将GitHub上的项目设置为公开。是时候展示真正的技术了哈~
这个项目中,90%的flutter基础Widget都有使用到,各种百搭情景都有涉及。基本上每个文件都有相关注释。部分方法也有想对应的注释。毕竟是为了分享么。目前的最新分支是master-new,大家可以pull下来后直接在master-new上编译。

开源

最重要的是,大家可以提交代码~~,目前新建了一个dev-open分支。由于本豆芽APP还没完全写完,想锻炼自己的可以向这个分支提交代码。

大家可以向这个分支根据豆瓣UI做设计稿,提交代码

  • 这个分支供广大Flutter开发者来学习Flutter
  • 此分支囊括了Flutter 90%的组件的基本与组合使用,是初学者真正实践的不错选择
  • 在此豆芽APP的首页实现与影片详情的UI特效,基于魔改Flutter源码。有兴趣可以看看
  • 大家想实战自己的Flutter能力,可以将某瓣APP作为设计稿,完成需求,并提交
  • 每位开发者提交的代码,我都会在文档中进行备注

未来版本计划(欢迎Flutter爱好者前来认领)

欢迎Flutter爱好者共同完成

涉及到UI,可参考豆瓣。

萌新TASK

  • 完成任意一个未实现的按钮
  • 完成任意一个未实现的页面
  • 优化原有Widget
  • 爱好者想实现但是未能实现的需求
  • More …

进阶TASK

  • 优化代码
  • 适当缓存数据
  • 解决卡顿(可参考:https://flutter-io.cn/docs/testing/ui-prformance)
  • 优化路由(可参考咸鱼方案:https://www.yuque.com/xytech/flutter/vf1dpf)

老手TASK

  • 接入rxdart
  • 使用Fish Redux 重构

时至今日,看到一个完整的Flutter项目在自己手中一点点打造出来,满满的成就感。当然,更多的是要分享与大家。来,大家一起学习Flutter,共同进步,提升自己的能力。谢谢大家~

豆芽apk体验下载(10MB)

frc 68777bdb8c4a44b1f7cf7793a7c701e3 - Flutter豆瓣客户端,诚心开源
扫一扫下载豆芽apk体验

GitHub下载地址

源码地址

各位大佬,给个start白~ https://github.com/kaina404/FlutterDouBan

frc 12e63f4167a7da7b12142b78e1a231fa - Flutter豆瓣客户端,诚心开源
博客地址

Flutter Container
Flutter SafeArea
Flutter Row Column MainAxisAlignment Expanded
Flutter Image全解析
Flutter 常用按钮总结
Flutter ListView豆瓣电影排行榜
Flutter Card
Flutter Navigator&Router(导航与路由)
OverscrollNotification不起效果引起的Flutter感悟分享
Flutter 上拉抽屉实现
Flutter 豆瓣客户端,诚心开源
Flutter 更改状态栏颜色

Flutter豆瓣客户端,诚心开源