
通过 Codelab、YouTube 视频、详细文档等资源,找到您开始 Flutter 之旅或继续学习所需的一切。
成为一名 Flutter 开发者
无论您是初次编程,还是来自其他语言,我们都会引导您走上正确的道路。

将您的技能提升到新的水平
以最适合您的方式提升技能——查看视频、高质量文档、Codelab 等。

扩展您的 Flutter 知识
学习 Flutter 的新知识,继续扩展您的技能,并及时了解最新公告和重大变更。


初级
以前从未接触过 Flutter 或 Dart?我们已为您准备好。这段旅程将带您从“什么是 Widget?”到“我刚刚构建了我的第一个应用!”

中级
这段旅程将带您从“我刚刚构建了我的第一个应用”到“我已准备好帮助其他开发者!”

高级
从“我能帮助他人”到“我深谙 SDK 内部机制,并能带领团队构建、发布和维护一流应用。”
在您安装期间...
- 了解 Flutter 文档
- 访问示例库
- 了解 Dart 代码
- 订阅Flutter 和 Dart 博客
- 查看 StackOverflow 的 Flutter 标签
- 订阅 YouTube 频道
-
- ...并观看 Widget of the Week,直到您的 IDE 准备就绪!
来自其他 SDK 或语言?
一切皆是 Widget!
- 阅读Widgets 介绍
- 本指南解释了如何使用 widget 构建布局
了解 Dart
- 访问 dart.dev,Dart 官方网站
- 了解 Flutter 为何使用 Dart
- 完成 Dart 速查表 Codelab
让您的应用看起来很酷
- 一种选择是 Material Design
-
- 查看它们的组件!
- 以及这些 Material Codelab!
- 需要灵感?
-
- 尝试观看 Johannes Milke 的视频
- 或 Super-Declarative 的 widget 研讨会
- 或者像 Awesome Flutter 这样的社区维护索引!
了解如何实现网络功能!
- 您看过 Flutter Cookbook 吗?它有一系列关于网络连接的文章
- 许多应用使用 http 包
- 了解如何反序列化 JSON
-
- 还有一个示例!
自信地导航
- Flutter Cookbook 也有一系列关于导航的文章!
- 顺便说一句,您可能会看到一些关于 Flutter 的 Router 和更高级导航的内容。它们很棒,但并非必需!
Flutter 和状态管理
- 观看一个关于“状态管理”对 Flutter 意味着什么的 I/O 演讲
- 您会惊讶于仅用一个 StatefulWidget 就能达到什么程度!
- 下一步很好的选择是尝试 Provider 搭配 ChangeNotifier
-
- 观看这集 Boring Show
- 或这些示例:provider_counter, provider_shopper
使用插件访问原生 API
- 阅读使用包和插件的指南
- 观看 Matt 和 Andrew 在 Boring Show 上使用气压计
- 查看 pub.dev,Dart 和 Flutter 的包生态系统
-
- 了解包评分
- ...以及Flutter 精选
测试您的代码!
- 阅读Flutter 测试指南
- 通读测试示例,其中展示了多种测试类型
- 通过测试 Codelab 练习您的技能!
加入社区!
- 查看社区目录
- 加入 Flutter Community Slack 并查看他们的博客
- 在 Twitter 上关注 Flutteristas!
- 在您附近寻找Flutter 聚会
- 将您的应用提交到 itsallwidgets.com
- 通过提交问题和提供反馈参与 Flutter 的开发
让我们暂停片刻
- ...并深入了解 Flutter
- ...并了解Flutter 的架构
- ...并研究 Flutter 对平台适配的理念
Widget 之下是什么?
- 在 Widgets 101 中了解元素、键和状态对象
- 观看来自中国、欧洲或俄亥俄州哥伦布的关于 Flutter 框架的技术演讲
Future 和 Stream
- 观看 Flutter in Focus 中 Dart 异步编程系列
- 完成异步编程 Codelab
使用隐式动画美化您的 UI
那资产呢?
- 需要动态字体?使用 google_fonts 包
- 阅读将资产直接包含到应用中的指南
了解更多关于布局的信息
- 阅读关于布局、约束和构建响应式应用的指南
- 尝试布局基础 Codelab
- 观看 MediaQuery 的 Widget of the Week 系列
表单和验证
- 阅读一些关于输入、验证和表单的Cookbook 文章
- 查看示例应用
Firebase
- 观看 Getting Started Firecast
-
- 别忘了在那里订阅频道!
- 阅读 FlutterFire 文档
- 尝试 Firebase for Flutter Codelab 或 Firestore + Maps 示例应用
- 了解如何使用 Cloud Firestore 组织您的数据
深入了解插件和原生 API
- 阅读关于平台通道工作原理的指南
- 尝试构建您自己的插件 Codelab
- 通读平台通道示例应用
回馈社区
- 加入社区!
-
- 在Flutter 聚会上做志愿者
- 在 StackOverflow 上回答问题
- 在 GitHub 上创建一个开源应用并发布到 itsallwidgets.com
- Flutter 离不开您!
-
- 在 flutter/flutter 中为您认为重要的问题投赞成票
- 为社区维护的插件或包做贡献
了解一些 Flutter 历史
- Eric Seidel 的 Strange Loop 演讲或他的 DartConf 演讲(当时 Flutter 还被称为“Sky!”)。
- Ian Hickson 关于为何存在 widget 的演讲
- Adam Barth 关于Flutter 渲染管道的演讲
- 阅读Flutter 路线图,了解 Flutter 的发展方向
- 查看 Dart 语言发展漏斗,了解 Dart 的发展方向
显式动画
- 尝试运行动画示例应用
- 阅读关于hero widget 和交错动画的指南
- 观看 Flutter in Focus 动画系列的高级视频。
- 查看来自 Flutter Europe 关于正确实现动画和实现复杂 UI 的演讲
高级布局/渲染
- 阅读一些 Flutter 社区关于 CustomPainter 的博客文章
- 阅读 Romain 关于构建您自己的渲染对象的博客文章
针对 iOS
- 访问 Cupertino widget 画廊
- 在 VeggieSeasons 示例应用中查看 Cupertino 包的实际应用
- 观看 Google I/O 上使用 Flutter 构建 iOS 应用的视频
进行桌面开发
- 查看指南
- 尝试桌面 Codelab
绑定到原生库
- 阅读关于如何在 Dart 和 Flutter 应用中使用 dart:ffi 连接 C 风格库,然后查看示例应用
- 阅读关于Dart 在 Web 应用中的 JS 互操作性
联合插件
- 阅读关于Flutter 联合插件的指南
- 查看示例
尝试将 Flutter 添加到现有应用
- 阅读概览以及针对 Android 和 iOS 的部分
- 使用添加 Flutter 到现有应用示例
- 尝试使用 package:pigeon 生成添加 Flutter 到现有应用的代码
生产中的应用
- 阅读如何使用 Firebase 的 Crashlytics 记录错误和异常
- 了解产品风格和 Flutter
- 了解 Flutter 的持续交付选项
回馈社区
- 创建或组织Flutter 聚会
- 阅读关于如何为 Flutter SDK 贡献代码
- 为重要的社区维护插件或包做贡献
- 阅读关于成为 Flutter Google 开发者专家
文档
深入研究
Flutter 文档



