我需要的是,当页面加载容器去右边的动画从中间。这是工作正常,现在我需要如果我点击左边的容器去左边的动画现在它只是 Flink ,并显示出幻灯片的权利。
我创建了一个虚拟代码
class changeit extends StatefulWidget {
const changeit({super.key});
@override
State<changeit> createState() => _changeitState();
}
class _changeitState extends State<changeit>
with SingleTickerProviderStateMixin {
late final AnimationController controller = AnimationController(
vsync: this,
duration: Duration(seconds: 1),
);
bool coin10 = false;
@override
void initState() {
// TODO: implement initState
super.initState();
controller.forward();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
SizedBox(
height: 200,
),
Padding(
padding: const EdgeInsets.all(15.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
GestureDetector(
onTap: () {
setState(() {
coin10 = true;
});
},
child: Text('LLLLL')),
SlideTransition(
position: Tween<Offset>(
begin: Offset(0, 0), end: Offset(coin10 ? -2 : 2, 0))
.animate(controller),
child: Container(
color: Colors.red,
height: 40,
width: 40,
),
),
GestureDetector(
onTap: () {
setState(() {
coin10 = false;
});
},
child: Text('RRRRR'))
],
),
)
],
),
);
}
}
我不知道为什么它不去动画我尝试使用偏移动画尝试改变它的功能,也尝试了点击转发,因为它的工作开始,但没有什么是为我工作。
2条答案
按热度按时间kg7wmglp1#
请尝试以下代码:**
预期输出为:
66bbxpm52#
当尝试运行动画&按需运行动画时,您需要以编程方式执行动画。
当点击左或右按钮时,你必须调用控制器上的
forward()
。建议
但是你当前的代码只能从中心到左或者从中心到右运行。要从square的当前位置开始动画,移动到最右边或者最左边,你需要在变量中维护位置。像这样修改它。
//声明变量
//在初始化状态内部
从位置变量开始更改动画