![](https://box.kancloud.cn/aa0ee26bdb70cef25c600b9422fb4808_500x691.jpg)
# 缘起
在全球,随着Flutter被越来越多的知名公司应用在自己的商业APP中,Flutter这门新技术也逐渐进入了移动开发者的视野,尤其是当Google在2018年IO大会上发布了第一个Preview版本后,国内刮起来一股学习Flutter的热潮。
为了更好的方便帮助中国开发者了解这门新技术,我们,[Flutter中文网](https://flutterchina.club/),前后发起了Flutter翻译计划、Flutter开源计划,前者主要的任务是翻译Flutter官方文档,后者则主要是开发一些常用的包来丰富Flutter生态,帮助开发者提高开发效率。而时至今日,这两件事取得的效果还都不错!
目前,Flutter中文官网日PV在5W左右,每日独立访问人数8000多。
自今年我们在github建立[官方账号](https://github.com/flutterchina)以来,前后开源了cookieJar、dio、flukit等多个项目,而dio在开源两周后,就迅速成为Flutter第三方包中Star排名第一的开源库。
之前,有很多次被没用过Flutter但对其保持好奇的开发者问到”Flutter的性能究竟怎样?“,”开发体验真的好吗?“这类问题。当时之所以会有很多这样的问题,主要的原因就是那时Flutter的成功案例太少,虽然国内闲鱼是第一个引入Flutter的商业应用,但初期也只是在很少的页面使用了Flutter,Flutter究竟能否适合用于完整项目缺乏考验。那时,我就想如果能用Flutter开发一个完整的APP发布到应用商店,这样开发者就可以在犹豫的时候可以先实际感受一下Flutter的流畅度,这样有个直观的了解后,就会容易做出判断,为此,我开发了[Gitme](https://flutterchina.club/app/gm.html),它是一个Github客户端,它支持了源码浏览、Issue、Label等Github的大多数功能。到目前为止,通过Gitme登录过Github账号的用户有5000多,日活用户有500。更重要的是,有很多人正是用了Gitme后,才来学flutter的。
虽然做的事情已经够多了,但是仍有一些很有必要去做的事情,由于时间原因,一直被搁置。
随着学习Flutter的人越来越多,一部分开发者通过查看官网的文档就能入门,但也有很多开发者感觉学习时有些吃力,而这主要的原因是没有一个资料去系统的学习Flutter。
我们虽然翻译了官方文档,但是对于海量的SDK文档,基本很难去全部翻译。而那时,电子工业出版社正好找到了我,希望我能写一本Flutter实战类的书籍。
这个想法听起来不错,书最大的好处就是可以系统性的介绍一门新技术,但由于我平时工作太忙,周末时间已经有很多花费在维护中文网和开源项目上了,所以此事不得不推迟,而直到今天,你现在看到的,也仍然不是完整的内容,目录灰色的部分都还没有写,那什么时候能写完?
如果只靠我一个人,也只能等我有空了才能写,但是今年实在是太忙了!当然,还是有一些方法可以加快进度,比如大家一起来写,本书已经开源,有志之士都可以提PR,然后需要做好的就是Review和校稿;当然还有一个不能保证一定有用的办法就是点击下面的”打赏“按钮,然后发一个大红包,这样作者拿了钱,说不定会不好意思慢慢吞吞的写,毕竟是收了钱的,哈哈。
最后再说一下为什么本书要开源。既然是电子工业出版社约的稿,就这么公开,难道将来就不会冲击实体书的销量?这个问题我是仔细考虑过的,很多写过书的人可能都知道,写技术书是不赚钱的,能收获的也就是一点点名气,而我吧却只喜欢钱,既然赚不到钱,那何不直接公开得了…当然还有另外一个原因就是要做实体书的话,最后和编辑校稿会花费很多时间,可是我实在是没时间了,很可能会放弃实体书出版,为了防止本书最后因不能正常出版而不能被大家看到,所以最终决定了开源。
最后,如果您发现本书中的错误,欢迎点击右上角的”编辑按钮“,提PR。如果您想一起参与本书创作,可以参考[《Flutter实战》贡献指南](https://github.com/flutterchina/flutter-in-action#%E8%B4%A1%E7%8C%AE%E9%A1%BB%E7%9F%A5)。
最后,知识是应该付费的,创作不易,开源不等于免费,如果您是本书读者并手头宽裕,可以点击下面打赏按钮打赏;当然,如果您囊中羞涩,您也可以阅读本书,但我对您有个小小的要求,希望您在阅读的过程中能积极参与到本书的纠错以及未完成内容的创作上来,也算是有所付出。
- 缘起
- 起步
- 移动开发技术简介
- Flutter简介
- 搭建Flutter开发环境
- 常见配置问题
- Dart语言简介
- 第一个Flutter应用
- 计数器示例
- 路由管理
- 包管理
- 资源管理
- 调试Flutter APP
- Dart线程模型及异常捕获
- 基础Widgets
- Widget简介
- 文本、字体样式
- 按钮
- 图片和Icon
- 单选框和复选框
- 输入框和表单
- 布局类Widgets
- 布局类Widgets简介
- 线性布局Row、Column
- 弹性布局Flex
- 流式布局Wrap、Flow
- 层叠布局Stack、Positioned
- 容器类Widgets
- Padding
- 布局限制类容器ConstrainedBox、SizeBox
- 装饰容器DecoratedBox
- 变换Transform
- Container容器
- Scaffold、TabBar、底部导航
- 可滚动Widgets
- 可滚动Widgets简介
- SingleChildScrollView
- ListView
- GridView
- CustomScrollView
- 滚动监听及控制ScrollController
- 功能型Widgets
- 导航返回拦截-WillPopScope
- 数据共享-InheritedWidget
- 主题-Theme
- 事件处理与通知
- 原始指针事件处理
- 手势识别
- 全局事件总线
- 通知Notification
- 动画
- Flutter动画简介
- 动画结构
- 自定义路由过渡动画
- Hero动画
- 交错动画
- 自定义Widget
- 自定义Widget方法简介
- 通过组合现有Widget实现
- 实例:TurnBox
- CustomPaint与Canvas
- 实例:圆形渐变进度条(自绘)
- 文件操作与网络请求
- 文件操作
- Http请求-HttpClient
- Http请求-Dio package
- 实例:Http分块下载
- WebSocket
- 使用Socket API
- Json转Model
- 包与插件
- 开发package
- 插件开发:平台通道简介
- 插件开发:实现Android端API
- 插件开发:实现IOS端API
- 系统能力调用
- 国际化
- 让App支持多语言
- 实现Localizations
- 使用Intl包
- Flutter核心原理
- Flutter UI系统
- Element和BuildContext
- RenderObject与RenderBox
- Flutter从启动到显示