Flutter 将转换应用于小部件而不重新绘制小部件树

Flutter 将转换应用于小部件而不重新绘制小部件树,flutter,flutter-animation,Flutter,Flutter Animation,假设我有这个堆栈: 堆栈( 儿童:[ Column(//=>我想在此应用transform(更具体地说是translate) 儿童:[ //一大堆小部件 ], ), 列(//=>和 儿童:[ //一大堆小部件 ], ), ], ); 堆栈中有两列,每列中都有一棵巨大的子树 我想做的是在特定状态下移动屏幕上的列 实现这一点的一种方法是将每个列包装在AnimatedBuilder中,但这意味着在每个帧上都需要重新创建整个小部件树,这并不理想 在原生Android中,有一种方法可以满足我的需要: s

假设我有这个堆栈:

堆栈(
儿童:[
Column(//=>我想在此应用transform(更具体地说是translate)
儿童:[
//一大堆小部件
],
),
列(//=>和
儿童:[
//一大堆小部件
],
),
],
);
堆栈中有两列,每列中都有一棵巨大的子树
我想做的是在特定状态下移动屏幕上的列

实现这一点的一种方法是将每个列包装在
AnimatedBuilder
中,但这意味着在每个帧上都需要重新创建整个小部件树,这并不理想

在原生Android中,有一种方法可以满足我的需要:
someView.animate().translateX(100).withLayer()


在颤振中是否有与此等效的方法,或其他实现此目的的方法?

多亏了@pskink,这就是它的实现方式:

堆栈(
儿童:[
动画生成器(
动画:_动画,
生成器:(上下文,子对象){
返回Transform.translate(
偏移量:偏移量(_animation.value,0),
孩子:孩子,
);
},
子:列(
儿童:[
//一大堆小部件
],
),
),
...
],
);
需要更改以实现转换的小部件是
transform.translate
,因此我将其放在
builder
类中,而树中不受其影响的其余部分则放在
AnimatedBuilder
子属性中

然后,子对象被传递回
builder
方法,在那里我可以将它赋给builder方法内部的child属性,而它不会被重建。

AnimatedBuilder
具有
child
property@pskink我不明白。您能详细说明一下吗?请查看
AnimatedBuilder.child
属性(以及
AnimatedBuilder
类)的官方文档。好的,我知道了,谢谢。我不知道我怎么会错过那个!