个人博客:
http://www.milovetingting.cn

Dart概览

参考文档:https://dart.cn/guides/language/language-tour

重要概念

1、所有变量引用的都是 对象,每个对象都是一个 的实例。数字、函数以及 null 都是对象。除去 null 以外(如果你开启了 空安全), 所有的类都继承于 Object 类。

2、尽管 Dart 是强类型语言,但是在声明变量时指定类型是可选的,因为 Dart 可以进行类型推断。

3、如果开启了 空安全,变量在未声明为可空类型时不能为 null。你可以通过在类型后加上问号 (?) 将类型声明为可空。

4、如果 明确知道 一个表达式不会为空,但 Dart 不这么认为时,可以在表达式后添加 ! 来断言表达式不为空(为空时将抛出异常)。

5、如果想要显式地声明允许任意类型,使用 Object?(如果你 开启了空安全)、 Object 或者 特殊类型 dynamic 将检查延迟到运行时进行。

6、Dart 支持泛型,比如 List<int>(表示一组由 int 对象组成的列表)或 List<Object>(表示一组由任何类型对象组成的列表)。

7、Dart 支持顶级函数(例如 main 方法),同时还支持定义属于类或对象的函数(即 静态实例方法)。还可以在函数中定义函数(嵌套局部函数)。

8、Dart 支持顶级 变量,以及定义属于类或对象的变量(静态和实例变量)。实例变量有时称之为域或属性。

9、Dart 没有类似于 Java 那样的 publicprotectedprivate 成员访问限定符。如果一个标识符以下划线 (_) 开头则表示该标识符在库内是私有的。

10、标识符 可以以字母或者下划线 (_) 开头,其后可跟字符和数字的组合。

变量

变量的定义

1
2
var name = 'zs';
String name = 'zs';

在 Dart 中,未初始化以及可空类型的变量拥有一个默认的初始值 null

assert() 的调用将会在生产环境的代码中被忽略掉。在开发过程中,assert(*condition*) 将会在 条件判断 为 false 时抛出一个异常。详情请查阅 Assert

1
2
int? lineCount;
assert(lineCount == null);

late变量

1
2
3
4
5
6
late String description;

void main() {
description = 'Feijoada!';
print(description);
}

Final和Const

如果你不想更改一个变量,可以使用关键字 final 或者 const 修饰变量,这两个关键字可以替代 var 关键字或者加在一个具体的类型前。一个 final 变量只可以被赋值一次;一个 const 变量是一个编译时常量 (const 变量同时也是 final 的)。

使用关键字 const 修饰变量表示该变量为 编译时常量。如果使用 const 修饰类中的变量,则必须加上 static 关键字,即 static const