使用 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 到了,明天见!

目录
相关文章
|
3月前
|
Dart 编译器 API
Dart笔记:Dart 库
Dart笔记:Dart 库
129 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
164 0
|
移动开发 JSON Dart
秀发去无踪之你不得不知道的Dart(下)
最近flutter发展的如火如荼,而Dart作为flutter的开发语言,了解一下
|
Dart JavaScript 前端开发
秀发去无踪之你不得不知道的Dart(上)
最近flutter发展的如火如荼,而Dart作为flutter的开发语言,了解一下
|
Dart JavaScript 前端开发
dart系列之:dart语言中的函数
dart系列之:dart语言中的函数
|
Dart JavaScript 前端开发
dart系列之:dart中的异步编程
dart系列之:dart中的异步编程
dart系列之:在dart中使用生成器
dart系列之:在dart中使用生成器