fluttering Flutter( 二 )


由于使用原生控件进行渲染 , 性能体验也会更接近原生 。但也只是更接近 , 和原生还是有差距的 , 因为它需要频繁的进行 JavaScript 和原生之间的通信 , 这个通信效率是比较低的 。
另外 , 由于需要适配各个平台的控件 , 那就有可能出现 , 系统控件更新了 , 而框架本身还没有更新 , 由此产生了一些问题 。换句话说 , 这种方案是受到原生控件限制的 。
绘图引擎渲染
接下来就是主角了 。
在前端 , 如果完全不使用原生控件 , 我们可以通过系统的绘图 API 绘制出一个用户界面 。从这个角度出发 , 可以在各个平台使用一个统一接口的绘图引擎来进行界面绘制 , 这个引擎最终调用的是系统的 API 绘制的 。这样的话 , 它的性能可以做到接近原生 , 并且又不受原生控件的限制 , 在不同平台上能够做到 UI 统一 。
Flutter 就是这样的一个开发框架 。
一个跨平台 UI 解决方案
Flutter 是由 Google 开发的 , 一个跨平台 UI 解决方案 。换句话说 , 它原则上只管 UI 的问题 , 如果涉及到平台本身的一些功能 , 比如调用蓝牙、摄像头 , 一般还是需要原生代码去操作 。但现在也会有一些第三方库帮我们解决这些问题 。
绘图引擎 Skia
Flutter 使用 Skia 作为它的绘图引擎 。Skia 已经被 Google 收购 , 目前很多 Google 旗下的产品都是用 Skia 绘制的 , 包括 Android 。
Android 内置了 Skia , 但 iOS 没有 , 所以在打 iOS 安装包的时候 , 会把 Skia 一起打进去 。这就导致了 , 用同一份 Flutter 代码打包之后 , iOS 的包要比 Android 的包大一些 。
开发语言 Dart
Flutter 使用的开发语言 , 叫 Dart 。Dart 也是 Google 自家的 , 它是一门面向对象的语言 , 从它身上会看到一些其他开发语言的影子 。学习起来难度不大的 。
前面讲跨平台方案的时候 , 可以发现别的方案基本都是用 JavaScript 作为开发语言的 , 但为什么 Flutter 不用?就因为 Dart 是谷歌自家的吗?这个问题先留着 , 我们后面会提到 。
这里部分就简单点带过了 , 具体的搭建流程可以在官网查看:
主要的搭建步骤如下:
下载 Flutter SDK
官网下载地址:
由于在国内访问可能受限 , 官方为中国开发者搭建了镜像:
更新环境变量
解压后 , 将 flutter\bin 的全路径添加到环境变量 PATH 中 。
安装开发工具
理论上 , 任何文本编辑器都可以用来开发 Flutter 应用 , 但推荐的开发工具是 Android Studio、IntelliJ 以及 VS Code 。因为在这些开发工具上 , 可以安装官方的 Flutter 和 Dart 插件 , 得到更好的开发体验 。文章里使用 Android Studio 来演示 。
如果你打算开发 iOS 应用 , 则还需要安装 Xcode 。
安装插件
在开发工具的插件设置中 , 安装上面说到的 Flutter 和 Dart 插件 。Flutter 插件用于支持 Flutter 的运行、调试、热重载等功能 , 而 Dart 插件则提供了代码的输入校验、代码补全等功能 。
万物始于 Hello World , 我们先来创建一个显示 Hello World 的 Flutter 项目 。
在 Android Studio 的欢迎页面选择Start a new Flutter project  , 或者通过菜单栏的FileNewNew Flutter Project  , 创建一个新的 Flutter 项目 。
创建好的项目里面包含了 android 和 ios 两个文件夹 , 它们是标准的 Android 和 iOS 项目 。我们的 Flutter 代码 , 存放在 lib 文件夹里 。项目创建好后 , 会默认带一个计数器的示例 , 我们不管它 , 把 main.dart 的代码改成 Hello World:
启动一个模拟器 , 或者连上真机 , 点击Run运行一下 , 就能看这样一个界面了:
【fluttering Flutter】 具体代码先混个眼熟就好 , 具体的后面会再讲到 。
在写 Flutter 之前 , 还要先跟大家简单介绍一下 Dart 的语法 。如果你有 Java 或 JavaScript 的开发经验 , 以及面向对象的编程思想 , 学起来是很快的 。
我们可以在 test 文件夹下新建一个 dart 文件 , 用来写测试代码 。

秒懂生活扩展阅读