使用 dart tear-off

简介: 使用 dart tear-off

dart tear-off 是一种更简洁的写法。

tear-off 解释: 一个闭包,它采用与函数相同的参数,并在您调用它时调用底层函数。

如果没有理解不要着急,看几个例子就明白了。

不知道你是否还在这样写 dart

var charCodes = [68, 97, 114, 116];
var buffer = StringBuffer();
// Function:
charCodes.forEach((code) {
  print(code);
});
// Method:
charCodes.forEach((code) {
  buffer.write(code);
});
// Named constructor:
var strings = charCodes.map((code) => String.fromCharCode(code));
// Unnamed constructor:
var buffers = charCodes.map((code) => StringBuffer(code));
复制代码

赶快换成  tear-off 的方式吧

var charCodes = [68, 97, 114, 116];
var buffer = StringBuffer();
// Function:
charCodes.forEach(print);
// Method:
charCodes.forEach(buffer.write);
// Named constructor:
var strings = charCodes.map(String.fromCharCode);
// Unnamed constructor:
var buffers = charCodes.map(StringBuffer.new);
复制代码

如果你开始使用 tear-offs fature,必须确保 你的 dart 2.15(或更高版本)

$ dart --version
复制代码

在你的 pubspec.yaml,需要更新  SDK version 2.15 或更高。

environment:
  sdk: ">=2.15.0 <3.0.0"
复制代码

举个例子,体会一下用法 。

可能你以前这样写,使用一个 lamda 表达式。

var  texts =['IAM17', '天天更新'].map((word) => Text(word)).toList();
复制代码

使用构造函数 tear-offs ,可以非常简洁。

var texts = ['IAM17', '天天更新'].map(Text.new).toList();
复制代码

再举个例子

Widget widget;
var type = 'text';
switch (type) {
  case "outlined":
    widget = OutlinedButton(
      onPressed: () {},
      child: const Text("Button"),
    );
    break;
  case "text":
    widget = TextButton(
      onPressed: () {},
      child: const Text("Button"),
    );
    break;
  default:
    widget = ElevatedButton(
      onPressed: () {},
      child: const Text("Button"),
    );
}
复制代码

使用 tear-off 可以这样写

var type = 'text';
  Function button;
  switch (type) {
    case "outlined":
      button = OutlinedButton.new;
      break;
    case "text":
      button = TextButton.new;
      break;
    default:
      button = ElevatedButton.new;
  }
Widget widget = button(
    onPressed: () {},
    child: const Text("Button"),
);
复制代码

还是很简单的,希望你 get 到了,明天见!

目录
相关文章
|
7月前
|
Dart 编译器 API
Dart笔记:Dart 库
Dart笔记:Dart 库
190 0
|
JSON Dart 编译器
Dart简单介绍
Dart是一种面向对象、用于构建高性能应用程序的编程语言,它具有快速开发、易于维护和可移植性等特点,因此在 Flutter 应用程序开发方面越来越受欢迎。在这篇文章中,我们将深入探讨 Dart 语言的一些技术思考。 类型系统
Dart简单介绍
Runes——Dart
Dart中,Runes是指UTF-32定义的Unicode字符串。 Unicode使用数字表示世界上所有的字母、数字和符号。因为Dart中的String是一系列UTF-16字节单元,而在String中想要表示32位的Unicode值,则需要特殊的语法。 一般我们使用 `\uXXXX` 这种形式表示一个Unicode码,`XXXX`表示4个十六进制值。例如,字符(♥)的Unicode字符是`\u2665`。 当十六进制数据多余或者少于4位时,将十六进制数放入到花括号中,例如,微笑表情(😆)是`\u{1f600}`。 String类中有几个属性你可以用来获取`rune`信息。
|
Dart JavaScript 前端开发
Numbers——Dart
Dart中的数字类型有两种,int和double。
|
Dart
在 dart 中使用 equatable
在 dart 中使用 equatable
188 0
|
存储 Dart
Flutter之搞定Dart(二下)
这里,我只列出来相对其他语言比较特殊的运算符,因为某些运算符太简单了,不浪费时间,比如+、-、+=、==。 你可能会疑惑,Dart为什么要搞出这么多特殊的运算符呢? 你要坚信一点:所有这些特殊的运算符都是为了让我们在开发中可以更加方便的操作,而不是让我们的编码变得更加复杂。
335 0
Flutter之搞定Dart(二下)
|
Dart
Flutter之搞定Dart(二上)
这里,我只列出来相对其他语言比较特殊的运算符,因为某些运算符太简单了,不浪费时间,比如+、-、+=、==。 你可能会疑惑,Dart为什么要搞出这么多特殊的运算符呢? 你要坚信一点:所有这些特殊的运算符都是为了让我们在开发中可以更加方便的操作,而不是让我们的编码变得更加复杂。
170 0
Flutter之搞定Dart(二上)
|
Dart 监控 索引
Flutter之搞定Dart(二中)
这里,我只列出来相对其他语言比较特殊的运算符,因为某些运算符太简单了,不浪费时间,比如+、-、+=、==。 你可能会疑惑,Dart为什么要搞出这么多特殊的运算符呢? 你要坚信一点:所有这些特殊的运算符都是为了让我们在开发中可以更加方便的操作,而不是让我们的编码变得更加复杂。
200 0
|
移动开发 JSON Dart
秀发去无踪之你不得不知道的Dart(下)
最近flutter发展的如火如荼,而Dart作为flutter的开发语言,了解一下
|
Dart JavaScript 前端开发
秀发去无踪之你不得不知道的Dart(上)
最近flutter发展的如火如荼,而Dart作为flutter的开发语言,了解一下