Flutter学习笔记02:Dart语言简介

一、Dart语言概述

Dart是谷歌开发的计算机编程语言,被用于web、服务器、移动应用和物联网等领域的开发。Dart是面向对象的、类定义的、单继承的语言。它的语法类似C语言,可以转译为JavaScript,支持接口(interfaces)、混入(mixins)、抽象类(abstract classes)、具体化泛型(reified generics)、可选类型(optional typing)和sound type system。其语法风格借鉴了Java、JavaScript、Kotlin编程语言的风格。

Dart亮相于2011年10月10日至12日在丹麦奥尔胡斯举行的GOTO大会上。该项目由Lars bak和kasper lund创建。

Ecma国际组织组建了技术委员会TC52来开展Dart的标准化工作,并且在Dart可以编译为标准JavaScript的情况下,它可以在任何现代浏览器中有效地工作。Ecma国际组织于2014年7月第107届大会批准了Dart语言规范第一版,并于2014年12月批准了第二版。

2015年5月Dart开发者峰会上,亮相了基于Dart语言的移动应用程序开发框架Sky,后更名为Flutter。

2018年8月8日,Google Dart 产品经理宣布 Dart 2 正式发布,目标是成为主流的移动和 Web 开发语言。同时,Google 还宣布重构 Dart Web 平台,对开发者来说,这是一个高效率、高性能和可扩展的组合。由于 Flutter 已经与 Dart 2 SDK 绑定几个月了,相信许多 Flutter 的开发者已经享受了 Dart 2 的许多优势,由于框架和语言之间具有耦合的紧密关系,因此 Dart 2 正式发布对 Flutter 正式版来说,是一个重要的里程碑。

Dart 的 Web 工具基于新的构建系统,旨在实现快速,可调试和可扩展的目标。现在,将 Sass 编译为 CSS 或将 Dart 编译为 JavaScript 等任务发生在一个工具链中,该工具链在你更改应用程序的各个部分时,支持快速地增量更新。构建系统还旨在支持 Web 之外的应用。例如:Flutter 开发人员使用它来生成 JSON 序列化代码。

Dart 2 还有一组扩展的开发工具。除了支持 Android Studio 和 JetBrains 套件工具(包括 IntelliJ IDEA 和 WebStorm)之外,还支持带有 Dart Code 扩展的 Visual Studio 代码。

最后,Dart SDK 附带了其他有用的工具:一个与包站点并用的包管理器,一个静态分析器,一个作为包使用的 linter,以及用于编辑符合 Dart 样式指南的 Web 文档和代码格式的工具。

二、第一个Dart语序

1main() { 2 print("Hello World!"); 3} 4 5

main()函数是Dart中的预定义方法。此方法充当应用程序的入口点。Dart脚本需要main()方法来执行。这一点跟Java语言是完全一样的。print()是一个预定义的函数,它将指定的字符串或值打印到标准输出(即终端)。

上述代码的输出将是:

1Hello World! 2 3

三、Dart标识符

标识符是程序中元素的名称,如变量,函数等。标识符的规则是:

• 标识符可以包括字符和数字。但是,标识符不能以数字开头
• 除下划线(_)或美元符号($)外,标识符不能包含特殊符号
• 标识符不能是关键字
• 它们必须是唯一的。
• 标识符区分大小写
• 标识符不能包含空格
有效标识符和无效标识符的对比:

四、Dart关键字

关键字在语言的上下文中具有特殊含义。下表中列出了Dart语言中的一些关键字。
在这里插入图片描述

五、空白和换行

Dart忽略程序中出现的空格,制表符和换行符。可以在程序中自由使用空格,制表符和换行符,并且可以自由地以简洁一致的方式格式化和缩进程序,使代码易于阅读和理解。

六、Dart区分大小写

Dart区分大小写。Dart中大写和小写字符表示不同地含义。

七、声明以分号结尾

每行指令都称为语句。每个dart语句必须以分号(;)结尾。一行可以包含多个语句。但是,这些语句必须用分号分隔。

八、Dart注释

注释是提高程序可读性的一种方法。注释可用于包含有关程序的其他信息,如代码的作者,有关函数/构造的提示等。编译器会忽略注释。
Dart支持以下类型的注释 :

• 单行注释(//这是单行注释):// 和行尾之间的任何文本都视为注释
• 多行注释(/*这是多行注释/):这个注释可能跨越多行。

九、Dart面向对象编程

Dart面向对象编程Dart是一种面向对象的语言。面向对象是一种遵循真实世界建模的软件开发范例。面向对象将程序视为通过称为方法的机制相互通信的对象集合。
1、对象:对象是任何实体的实时表示。根据Grady Brooch,每个对象必须具有三个功能:
————状态:由对象的属性描述。
————行为:描述对象的行为方式。
————标识:将对象与一组类似此类对象区分开的唯一值。
2、类:类是创建对象的蓝图/模板,类封装了对象的数据。
3、方法:方法促进对象之间的通信。

示例:Dart和面向对象:

1class Develop{ 2 void display(String msg){ 3 print("Dart is base of Flutter$msg"); 4 } 5} 6 7void main() { 8 print(getName()); 9 Develop develop = new Develop();//创建对象这一点跟Java的方式是一致的。 10 develop.display(", it is runtime on Android and iOS Divices"); 11} 12String getName() { 13 return "一万头草泥🐴马马🐴,万马奔腾"; 14} 15 16

上面的示例代码中定义了一个类Develop。该类有一个display()方法。该方法在终端上打印字符串。在main()方法里面new关键字创建类的对象。该对象调用display()方法。
执行上面代码将产生以下输出:

1一万头草泥🐴马马🐴,万马奔腾 2Dart is base of Flutter, it is runtime on Android and iOS Divices 3 4

重要的事情说三遍:

以上二、三、五、六、七、八、九共七点跟Java的规则是一致的。
以上二、三、五、六、七、八、九共七点跟Java的规则是一致的。
以上二、三、五、六、七、八、九共七点跟Java的规则是一致的。

代码交流 2021