【发布时间】:2020-01-23 22:21:12
【问题描述】:
我的目标是,有一个可以在垂直轴上拖动的容器。移开手指后,容器应该以我在结束触摸后的速度向前移动一点。我希望在您停止在 Android 手机上滚动并且它会继续滚动更进一步后获得完全相同的动画/感觉。
这是目前的样子:
这是我的代码:
class _MyHomePageState extends State<MyHomePage>
with SingleTickerProviderStateMixin {
double _offeset = 0;
double get offset => _offeset;
set offset(double offeset) {
if(offeset < 500)
setState(() {
_offeset = offeset;
});
}
AnimationController controller;
ClampingScrollSimulation simulation;
@override
void initState() {
super.initState();
controller = AnimationController(vsync: this, upperBound: 5)
..addListener(() {
offset += controller.value;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: <Widget>[
Positioned(
top: offset,
left: 0,
right: 0,
child: GestureDetector(
onVerticalDragUpdate: (DragUpdateDetails details) {
offset += details.delta.dy;
},
onVerticalDragEnd: (DragEndDetails details) {
simulation = ClampingScrollSimulation(
position: 0, velocity: details.primaryVelocity,
);
controller.animateWith(simulation);
},
child: Container(height: 50, width: 50, color: Colors.red),
),
),
],
),
);
}
}
问题是,这不是 Android 滚动动画,我不知道如何获取它。 (感觉动画是线性的,过早停止,并没有利用速度参数)我什至在使用ClampingScrollSimulation 类,在 Flutter 中的所有 Scroll 小部件中都使用该类来模拟 Android 滚动。
【问题讨论】:
标签: animation flutter dart widget