Заткнись, как применить пользовательскую анимацию в PageView.builder с помощью Dismissible или Gesture Detector или другим способом - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть 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 я не могу применить свой пользовательский анимация. Как я могу применить свою собственную анимацию? Есть идеи?

Спасибо за помощь!

...