У меня есть PageView.builder
с пользовательской анимацией.
Matrix4 animationController(context, position) {
if (position == currentPageValue.floor()) {
double _animationvalue =
lerpDouble(0.0, pi / 2, currentPageValue - position);
return Matrix4.identity()
..setEntry(3, 2, 0.003)
..rotateY(_animationvalue);
} else if (position == currentPageValue.floor() + 1) {
double _animationvalue =
lerpDouble(0.0, pi / 2, currentPageValue + 1 - position);
return Matrix4.identity()
..setEntry(3, 2, 0.003)
..rotateY(-(pi / 2) + _animationvalue);
} else {
//off screen page
return Matrix4.identity();
}
}
AlignmentGeometry animationAlignmentController(context, position) {
if (position == currentPageValue.floor()) {
return FractionalOffset.centerRight;
} else {
return FractionalOffset.centerLeft;
}
}
Pageviewbuilder:
PageView.builder(
controller: controller,
itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
value: swipeIt[i],
child: Transform(
transform: animationController(context, i),
alignment: animationAlignmentController(context, i),
child: ClipRect(child: FindItem()),
),),
itemCount: swipeIt.length,
));
Внутри FindItem
Я хочу удалить элементы из списка в зависимости от направления пролистывания , Если я использую GestureDetector
, мои функции по удалению работают, но пользовательская анимация не работает. Если я использую Dismissible
с ondismissed
, мои функции также работают, но у меня есть базовая c отключаемая анимация.
В обоих случаях GestureDetector
или Dismissible
я не могу применить свой пользовательский анимация. Как я могу применить свою собственную анимацию? Есть идеи?
Спасибо за помощь!