Dart 语法

1. 级联操作符 …

var paint =
    Paint()
      ..color = Colors.black
      ..strokeCap = StrokeCap.round
      ..strokeWidth = 5.0;

2. firstWhereOrNull

3. 隐藏或导入部分组件

// Import only foo.
import 'package:lib1/lib1.dart' show foo;

// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;

3. 单个 Case 模式 可以实现相同的验证。 单个 case 最适合作为 if-case 语句。模式提供了一种更具声明性且不那么冗长的 JSON 验证方法:

if (data case {'user': [String name, int age]}) {
  print('User $name is $age years old.');
}

data case {‘user’: [String name, int age]}:这是一个模式匹配表达式。
data 是要匹配的对象。
case 关键字用于指定模式。
{‘user’: [String name, int age]} 是一个模式,表示 data 必须是一个 Map,并且包含一个键为 ‘user’ 的条目,其值是一个包含两个元素的列表,第一个元素是 String 类型,第二个元素是 int 类型。
String name 和 int age 是变量声明,用于捕获匹配到的值。
如果 data 符合这个模式,name 和 age 会被赋值为对应的值,并且 if 块中的代码会被执行。
参考链接:https://dart.cn/language/patterns/

4. 函数 Tear-off

void printCharCode(int code) {
  print(String.fromCharCode(code));
}

void main() {
  var charCodes = [68, 97, 114, 116];
  // 函数 Tear-off
  charCodes.forEach(printCharCode);
}

在这个例子中,printCharCode 是一个函数。通过 charCodes.forEach(printCharCode),我们直接将 printCharCode 传递给 forEach,而不需要写成 charCodes.forEach((code) => printCharCode(code))。

5. 生成器

yield:用于在生成器函数中逐个返回值。
yield*:用于委托生成器的执行,避免嵌套调用的开销。
同步生成器:返回一个 Iterable 对象,使用 sync* 标记。
异步生成器:返回一个 Stream 对象,使用 async* 标记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值