基础语法

入口函数

Dart 的入口函数跟 C 相同, 就是 main 函数:

main() {
  ...
}

变量与常量

// 变量
var i = 0;
int a = 10; // 指定类型
// 常量
const pi = 3.14;

控制流程

控制流程跟 js 类似, 这里只是说一下不同的地方, 基础只是不再赘述。

条件语句的显式判断

在 if 条件句中, 需要显式对条件判定(判定结果必须为布尔值), 比如:

// 错误的示例
var name = 'Bob';
if (name) {
  // Prints in JavaScript, not in Dart.
  print('You have a name!');
}
// 正确的示例
var name = 'Bob';
if (name == 'Bob') {
  print('You have a name!');
}

在 JS 中两种示例都能正常执行, 但 Dart 只有下面的示例可以如期执行, 虽然我并不习惯这样的设定

case 语句的继续执行

如果你需要实现这种继续到下一个 case 语句中继续执行,则可以 使用 continue 语句跳转到对应的标签(label)处继续执行:

var command = 'CLOSED';
switch (command) {
  case 'CLOSED':
    executeClosed();
    continue nowClosed;
    // Continues executing at the nowClosed label.
nowClosed:
  case 'NOW_CLOSED':
    // Runs for both CLOSED and NOW_CLOSED.
    executeNowClosed();
    break;
}

运算符

级联操作

级联操作用 2 个点(..)表示,可对同一对象执行一系列操作。类似于 JavaScript 的 Promise 的 then 处理。

级联操作主要是简化代码。

query('#btn1') // 获取一个id为btn1的按钮对象
    ..text='确定'
    ..classes.add('Button1Style')
    ..onClick.listen((s) => window.alert('ok'));

等价于

var btn1=query('#btn1'); // 获取一个id为btn1的按钮对象
btn1.text='确定';
btn1.classes.add('Button1Style');
btn1.onClick.listen((s) => window.alert('ok'));

判空运算符

判空运算符为 ??

var a;
print(a); // null
print(a ?? 0); // 0
a = 1;
print(a ?? 0); // 1

类型判定操作符

操作符 解释
as 类型转换
is 如果对象是指定的类型返回 True
is! 如果对象是指定的类型返回 False
var a;
print(a == null); // true
print(a is Object); // true
print(a is List); // false

更多操作符参考: Operators(操作符)

参考资料

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress