《Flutter》-- 3.Dart语言

2022-04-07 16:20:48 浏览数 (1)

参阅书籍:

《Flutter跨平台开发入门与实践》-- 向治洪(著)

参阅网站:

https://www.dartcn.com/guides/language/language-tour

3. Dart语言

Dart是谷歌公司于2011年10月发布的一门全新的编程语言,已被欧洲计算机制造商协会(European Computer Manufacture Association,ECMA)认定为标准,初期目标是将其用于Web应用、服务器、移动应用和物联网等领域的开发。

Dart在设计之初参考了Java等面向对象的编程语言,因此Dart既有面向对象编程的特性,也有面向函数编程的特性。除了融合Java和JavaScript所长之外,Dart还提供了一些其他具有表现力的语法,如可选命名参数、级联运算符和条件成员访问运算符等。

使用Dart之前,需要先安装Dart SDK。Dart SDK包含了编写和运行Dart代码所需的一切工具,如虚拟机(Virtual Machine,VM)、库、分析器、包管理工具、文档生成器和代码调试等。

搭建开发环境时安装的Flutter SDK里已经包含了Dart SDK。

3.1 编写 Hello World

和大多数编程语言一样,Dart也把main()作为程序的入口。

首先,新建一个名为hello.dart的文件,添加如下代码。

然后在终端执行dart hello.dart命令,在终端可以看到输出了“Hello World!”。

3.2 变量和常量

变量仅存储对象引用。

3.2.1 声明变量

代码语言:javascript复制
//用var声明变量,name变量的类型会被推断为String
var name = 'huahua';

//用dynamic声明变量,不限定name变量的类型
dynamic name = 'huahua';

//显示声明变量,限定name变量的类型为String
String name = 'huahua';

注:显示声明的变量必须初始化后才能使用。

3.2.2 默认值

在Dart中,一切皆为对象,未初始化的变量默认值是null。

3.2.3 声明常量

在Dart中,声明使用过程中不会被修改的变量(即常量)可以使用final或const关键字。

final变量的值只能被设置一次,const变量的值在编译时就已经固定。

实例变量可以是final变量,但不能是const变量。

const还可以用来创建常量值,以及声明创建常量值的构造函数。

3.3 内置数据类型

3.3.1 Number

Number有两种类型:int(整型) 和 double(浮点型)。

从 Dart 2.1 开始,必要的时候 int 字面量会自动转换成 double 类型。

字符串和数字相互转换的方法:

代码语言:javascript复制
// String -> int
var one = int.parse('1');

// String -> double
var onePointOne = double.parse('1.1');

// int -> String
String oneAsString = 1.toString();

// double -> String
String piAsString = 3.14159.toStringAsFixed(2);

3.3.2 String

String是一组UTF-16的单元序列,通过单引号或双引号进行声明。

字符串可以通过 ${expression} 的方式内嵌表达式。如果表达式是一个标识符,则 {} 可以省略。

代码语言:javascript复制
var s = 'string interpolation';
print('Dart has $s, which is very handy.');//Dart has string interpolation, which is very handy.
print('That deserves all caps. '   '${s.toUpperCase()} is very handy!');//That deserves all caps. STRING INTERPOLATION is very handy!

使用连续三个单引号或者三个双引号实现多行字符串对象的创建。

使用 r 前缀,可以创建原始raw字符串。

3.3.3 Boolean

Dart使用 bool 类型表示布尔值。Dart只有字面量 true 和 false 是布尔类型,这两个对象都是编译时常量。

3.3.4 List

在Dart中,List表示列表,和数组是同一概念。Dart中的List类型和JavaScript中的Array类型是类似的。

代码语言:javascript复制
//通过字面量创建List
var list = [1, 2, 3];

3.3.5 Set

在Dart中Set是一个元素唯一且无序的集合。

代码语言:javascript复制
//通过字面量创建Set
var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'};

//创建一个空集
var names = <String>{};
//或Set<String> names = {};

//这样会创建一个Map,而不是Set
var names = {}; 

3.3.6 Map

通常来说, Map 是用来关联 keys 和 values 的对象。keys 和 values 可以是任何类型的对象。在一个 Map 对象中一个 key 只能出现一次,但是 value 可以出现多次。

代码语言:javascript复制
//通过字面量创建Map
var gifts = {
  // Key: Value
  'first': 'partridge',
  'second': 'turtledoves',
  'fifth': 'golden rings'
};

//通过构造函数创建Map
var gifts = new Map();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';

3.3.7 Rune

在 Dart 中,Rune 用来表示字符串中的 UTF-32 编码字符。

表示 Unicode 编码的常用方法是 uXXXX, 这里 XXXX 是一个4位的16进制数。对于特殊的非 4 个数值的情况,把编码值放到大括号中即可。

代码语言:javascript复制
var clapping = 'u{1f44f}';
print(clapping);//


	

0 人点赞