写在前面
本文基本上是将dart官网部分内容进行翻译,没兴趣的请出门左转至Dart的官网,有兴趣的同志请继续阅读本文。
Flutter教程在这里
Dart的一些重要概念
当你学习Dart语言时,记住这些事实和概念:
- 每个变量都是一个对象,而每个对象都是类的实例。甚至数字、函数和
null
都是对象。所有对象都继承自Object
。 - 尽管Dart是强类型的,但是类型注释是可选的,因为Dart可以推断类型。在之前上一节的代码中
var number = 42;
,number被推断为int类型。当你不想显示地声明一个变量的类型,那么您可以使用特殊类型dynamic
。 - Dart是支持泛型,如
List<int>
(一个数字列表)或者List<dynamic>
(一个任何类型的列表). - Dart支持*函数(如
main()
),以及绑定到类或对象(分别是静态方法和实例方法)的函数。您还可以在函数(嵌套或局部函数)中创建函数。 - 类似地,Dart支持*变量,以及绑定到类或对象(静态和实例变量)的变量。实例变量有时被称为字段或属性。
- 与Java不同的是,Dart没有关键字public、protected和private。如果标识符以下划线(_)开头,则该标识符对其库是私有的。 在之后的教程中我们会详细讲解。
- 标识符(变量名、方法名、类名)可以以字母或下划线(_)开头,后面的可以是这些字符加上数字的任何组合。
- Dart工具可以报告两种问题:警告和错误。警告只是表明您的代码可能不工作,但它们不会阻止您的程序执行。错误可以是编译时错误,也可以是运行时错误。编译时错误阻止了代码的执行;运行时错误导致代码执行时引发异常。
关键字
abstract | do | import | super |
as | dynamic | in | switch |
as | else | interface | sync* |
async | enum | is | this |
async* | export | library | throw |
await | external | mixin | true |
break | extends | new | try |
case | factory | null | typedef |
class | final | part | void |
const | finally | rethrow | while |
continue | for | return | with |
covariant | get | set | yield |
default | if | static | yield* |
deferred | implements |
以上的字段均为保留字段,不能用于标识符。
变量
下面的代码展示了创建一个变量并进行初始化:
var name = 'Bob';
变量存储引用。名为name的变量包含对字符串对象的引用,值为“Bob”。
变量name的类型被推断为String,但是您可以通过指定它来更改该类型。如果对象不限于单个类型,则指定对象或动态类型,遵循设计指导原则。
dynamic name = 'Bob';
另一种方式是显式声明要推断的类型:
String name = 'Bob';
默认值
未初始化的变量的初始值为null
。甚至具有数字类型的变量最初也是null,因为数字就像dart中的其他东西一样也是对象。
int lineCount;
assert(lineCount == null);
注意:在生产代码中,assert()调用将被忽略。在开发期间,
assert(condition)
抛出异常,除非条件为真。