有时我看到这个 List List = [];

然后列出. . add(颜色)

1点(.)和2点(..)的区别是什么?


. .称为级联表示法。如果你想在同一个对象上调用多个方法,它允许你不重复同一个目标。

List list = [];
list.add(color1);
list.add(color2);
list.add(color3);
list.add(color4);

// with cascade

List list = [];
list
  ..add(color1)
  ..add(color2)
  ..add(color3)
  ..add(color4);

它是Dart的级联运算符

var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);

结果l1是一个列表[0,1,2,3]

var l1 = new List<int>().add(0).addAll([1, 2, 3]);

导致错误,因为.add(0)返回void

. .(在前一个例子中)指向新的List(), 时间。(在后面)指的是表达式前一部分的返回值。

. .引入的目的是为了避免在add()等各种方法中返回此值,以便能够流畅地使用API。

. .为所有类提供开箱即用的功能。

级联(..)允许您对同一个对象进行一系列操作。阅读文档了解详情

querySelector('#confirm') // Get an object.
  ..text = 'Confirm' // Use its members.
  ..classes.add('important')
  ..onClick.listen((e) => window.alert('Confirmed!'));

前面的例子等价于:

var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));

. .在dart中称为级联运算符。

它允许你使用多个子序列操作:

例子:

banerad . . load() . .()。

List coursename;
coursename..add("java")..add("flutter" )..add("dart");

这是另一个例子

双点(..)也称为级联算子

如果你想在同一个对象上调用多个方法,它允许你不重复同一个目标。

例如:没有双点

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

但是在使用“..,上面的代码将被写成这样:

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

三重点(…)即扩散运算符

“…”也被称为展开运算符,它提供了一种简洁的方式将多个值插入到一个集合中。 你可以使用它将一个列表中的所有元素插入到另一个列表中:

通常我们使用.add()或.addAll()向列表中添加数据,如下所示:

var list = [1, 2, 3];
var list2=[];
list2.addAll(list);

在使用“…”之后,我们将编写如下代码:

var list = [1, 2, 3];
var list2 = [0, ...list];