Flutter 中的 AnimatedPositioned 小部件:全面指南
AnimatedPositioned
是Flutter中的一个小部件,它可以在Stack
中动态改变其位置。这个小部件在Stack
中的定位类似于Positioned
,但是它可以动画化。
以下是一个简单的使用AnimatedPositioned
的例子:
Stack(
children: <Widget>[
Container(
color: Colors.blue,
),
AnimatedPositioned(
left: 10.0,
right: 10.0,
bottom: 10.0,
top: 10.0,
duration: Duration(seconds: 2),
child: Container(
color: Colors.red,
),
),
],
)
在这个例子中,我们创建了一个Stack
,其中包含一个Container
和一个AnimatedPositioned
。AnimatedPositioned
包含一个Container
作为其子元素,并且将其位置动画化。当调用setState
并更改left
, right
, bottom
, top
属性的值时,AnimatedPositioned
会在指定的持续时间内平滑地过渡到新位置。
要动画化位置,你可以使用CurvedAnimation
或者AnimationController
,并在需要改变位置时,更新这些动画的值。
例如,使用AnimationController
:
AnimationController controller;
@override
void initState() {
super.initState();
controller = AnimationController(vsync: this, duration: Duration(seconds: 2));
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
void moveWidget() {
controller.forward(from: 0.0);
}
@override
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
Container(
color: Colors.blue,
),
AnimatedPositioned(
left: 10.0,
right: 10.0,
bottom: 10.0,
top: 10.0,
duration: Duration(seconds: 2),
child: Container(
color: Colors.red,
),
),
],
);
}
在这个例子中,我们创建了一个AnimationController
,并在initState
中初始化它。当调用moveWidget
函数时,使用controller
的forward
方法更新AnimatedPositioned
的位置。
这只是AnimatedPositioned
的基本使用方式。它还有其他属性,如curve
,可以用来控制动画的速度和曲线。
评论已关闭