Моя цель - создать контейнер, который можно перемещать по вертикальной оси.После удаления пальца контейнер должен двигаться немного вперед со скоростью, которая была у меня после окончания касания.Я хочу, чтобы у вас была точно такая же анимация / ощущение после того, как вы перестанете прокручивать на телефоне 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
, который используется во всех виджетах Scroll во Flutter для имитации прокрутки Android.