Flutter技术入门与实战
上QQ阅读APP看书,第一时间看更新

3.1 Dart重要概念与常用开发库

Dart诞生于2011年10月10日,谷歌Dart语言项目的领导人Lars Bak在丹麦举行的Goto会议上宣布,Dart是一种“结构化的Web编程”语言,Dart编程语言在所有现代浏览器和环境中提供高性能。

Dart虽然是谷歌开发的计算机编程语言,但后来被ECMA认定为标准。这门语言用于Web、服务器、移动应用和物联网等领域的开发,是宽松开源许可证(修改的BSD证书)下的开源软件。

Dart最新的版本是Dart2, Dart 2是一款高效、简洁、已通过实战检验的语言,能够应对现代应用程序开发的挑战。Dart 2大大加强和精简了类型系统,清理了语法,并重建了大部分开发工具链,使移动和Web开发变得更加愉快和高效。Dart 2还融合了包括Flutter、AdWords和AdSense等工具开发者对该语言早期使用的经验教训,以及针对客户反馈的成千上万大大小小的问题进行了改进。

那么Flutter和Dart有什么关系?确实有关系。早期的Flutter团队评估了十多种语言才选择了Dart,因为它符合构建用户界面的方式。以下是Flutter团队看重Dart语言的部分特性:

Dart是AOT(Ahead Of Time)编译的,编译成快速、可预测的本地代码,使Flutter几乎都可以使用Dart编写。这不仅使Flutter变得更快,而且几乎所有的组件(包括所有的小部件)都可以定制。

Dart也可以JIT(Just In Time)编译,开发周期异常快,工作流颠覆常规(包括Flutter流行的亚秒级有状态热重载)。

Dart可以更轻松地创建以60fps运行的流畅动画和转场。Dart可以在没有锁的情况下进行对象分配和垃圾回收。就像JavaScript一样,Dart避免了抢占式调度和共享内存(因而也不需要锁)。由于Flutter应用程序被编译为本地代码,因此不需要在领域之间建立缓慢的桥梁(例如,JavaScript到本地代码)。它的启动速度也快得多。

Dart使Flutter不需要单独的声明式布局语言(如JSX或XML),或单独的可视化界面构建器,因为Dart的声明式编程布局易于阅读和可视化。所有的布局使用一种语言,聚集在一处,Flutter很容易提供高级工具,使布局更简单。

开发人员发现Dart特别容易学习,因为它具有静态和动态语言用户都熟悉的特性。

并非所有这些功能都是Dart独有的,但Dart将这些功能组合得恰到好处,使Dart在实现Flutter方面独一无二。因此,没有Dart,很难想象Flutter像现在这样强大。

当你想创建移动App、Web App、Command-line应用时,都可以使用Dart语言,如图3-1所示。

图3-1 Dart支持的平台

Dart重要的概念如下:

所有的东西都是对象,无论是变量、数字、函数等都是对象。所有的对象都是类的实例。所有的对象都继承自内置的Object类。这点类似于Java语言“一切皆为对象”。

程序中指定数据类型使得程序合理地分配内存空间,并帮助编绎器进行语法检查。但是,指定类型不是必须的。Dart语言是弱数据类型。

Dart代码在运行前解析。指定数据类型和编译时的常量,可以提高运行速度。

Dart程序有统一的程序入口:main()。这一点与Java、C / C++语言相像。

Dart没有public、protected和private的概念。私有特性通过变量或函数加上下划线来表示。

Dart的工具可以检查出警告信息(warning)和错误信息(errors)。警告信息只是表明代码可能不工作,但是不会妨碍程序运行。错误信息可以是编译时的错误,也可能是运行时的错误。编译时的错误将阻止程序运行,运行时的错误将会以异常(exception)的方式呈现。

Dart支持anync/await异步处理。

关键字(56个)如下:abstract, do, import, super, as, dynamic, in, switch, assert,else, interface, sync*, enum, implements, is, this, async*, export, library, throw,await, external, mixin, true, break, extends, new, try, case, factory, null,typedef, catch, false, operator, var, class, final, part, void, const, finally,rethrow, while, continue, for, return, with, covariant, get, set, yield*, default, if,static, deferred。

Dart语言常用库如表3-1所示。

表3-1 Dart语言常用库

其中如下三个开发库的使用频率最高:

dart:core:核心库,包括strings、numbers、collections、errors、dates、URIs等。

dart:html:网页开发里DOM相关的一些库。

dart:io:I/O命令行使用的I/O库。

dart:core库是Dart语言初始已经包含的库,其他的任何库在使用前都需要加上import语句。例如,使用dart:html可以使用如下的命令:

        import 'dart:html';

使用官方提供的pub工具可以安装丰富的第三方库。第三方库的地址为:pub.dartlang. org。