推荐安装方式:下载 Github 上 Flutter 仓库,运行 bin 目录下的 flutter 脚本


Flutter 应用的编译调试,依赖 JDK、Andorid SDK 以及很多依赖包,需要安装 JDK 并配置相关环境变量。
即使准备用 VSCode 开发,也建议安装 Android Studio,因为安装过程会自动安装很多必需的依赖。




可以使用 Flutter 插件创建新项目,也可以直接打开 flutter 仓库中的 examples 目录,里面内置了多个项目。
以 examples/api 为例

一般项目只存在 android 和 ios 两个平台对应的目录


Flutter 新建项目,本身就可以认为是混合开发的,项目中本身就包含了 android 平台和 ios 平台相关代码。
登录、消息推送等逻辑,也必须用原生代码写。
Flutter 提供了与原生通信的方法,也提供了 FlutterActivity 和 FlutterViewController 给原生用于嵌入 Flutter 页面。
还可以将 Flutter 项目编译为模块,比如 Android 平台打包成 AAR 文件,嵌入到已有的原生代码仓库中,渐进式迁移。


在每一个平台上,会包含一个特定的嵌入层,该嵌入层采用了适合当前平台的语言编写。
例如 Android 使用的是 Java 和 C++
iOS 和 macOS 使用的是 Objective-C 和 Objective-C++
Windows 和 Linux 使用的是 C++。
Skia 是谷歌开源的 2D 渲染引擎,用于 Chrome 浏览器,ChromeOS,Android 和 Flutter。
Skia 是比 OpenGL 和 Vulkan 更上层的 API。
由于 Flutter 在 Android 和 iOS 都使用 Skia 作为渲染引擎,可以保证界面渲染完全可控。
与 ReactNative 相比,不需要把 UI 的渲染交给原生系统。
Widget 类似 React 中的 Component,是 Flutter 应用界面的基础组成单位。每个 Widget 都提供 build 方法,类似 React 中的 render 方法。
flutter 源码内置了大量的 Widget 供使用,比如 Container、Row、Column、Text、Image、Router 等。

有状态组件和无状态组件,和 React 类似。使用 stf 或 stl 可以快速输入代码片段


StatefulWidget 通过 setState 修改状态,一旦状态发生变化,就会触发 build 方法,重新构建界面。

分别是 Android 风格和 iOS 风格的组件,提供了更多平台风格的、功能更多的 Widget。
Material 和 Cupertino UI 都是 flutter 源码中自带的,Material 是默认启用的。
import 'package:flutter/material.dart';



Flutter 中的布局与 Web 布局差异很大,子组件的布局收父组件的限制,并不是自己设置为多大就能有多大。
Flutter 通过 Navigator 实现路由导航,类似 React 中的 history,通过 Navigator.push 导航到新路由,Navigator.pop 返回。

类似 React 的 Switch Route 设置



插件 (plugin) 是 package 的一种,是特别的 package,特指那些有关获得原生平台特性的 package。
在 pubspec.yaml 中指定 package 支持的平台。
项目中包含 android 、ios 等平台的相关代码,用对应的 kotlin、swift 编写。

将对不同平台的支持分为单独的软件包,然后用一个总包来联合
