当一个组件需要多种transform
变化时,可以使用dart里的级联运算符..
进行串联
Container(
width: 100,
height: 100,
// 同时实现斜切、平移与旋转
transform: Matrix4.skewX(0.2)..translate(-10.0)..rotateZ(0.2),
)
- 官方链接: 《级联运算符使用》
..
级联运算符可以实现对同一对象的链式调用,且在调用过程中忽略方法的返回值。
上面的例程中:
1) Matrix4.skewX(0.2)
工厂函数(或者理解成命名构造函数)返回Matrix4
实例对象;
2) 链式调用实例方法translate
(注意:这里是实例方法,不是类的工厂函数translationValues),这里如果用.
的话就会导致返回值是void
,而transform
字段需要的是Matrix4
对象;使用..
则会忽略返回值,使整个链式调用始终返回的是 Matrix4.skewX(0.2)
创建的实例对象;
3)链式调用实例方法rotateZ
,仍然使用..
,原因同上