startRunDragGridSlideAnimations<T> function

void startRunDragGridSlideAnimations<T>({
  1. required bool enable,
  2. required Size itemSize,
  3. required List<T> oldItems,
  4. required List<T> newItems,
  5. required AnimationController animateController,
  6. required List<Animation<Offset>?> slideAnimations,
  7. required List<Animation<double>?> fadeAnimations,
  8. required double crossAxisSpacing,
  9. required double mainAxisSpacing,
  10. required Axis direction,
  11. required int crossCount,
})

Start DragGrid slideAnimations (from -> end)

Implementation

void startRunDragGridSlideAnimations<T>({
  required bool enable,
  required Size itemSize,
  required List<T> oldItems,
  required List<T> newItems,
  required AnimationController animateController,
  required List<Animation<Offset>?> slideAnimations,
  required List<Animation<double>?> fadeAnimations,
  required double crossAxisSpacing,
  required double mainAxisSpacing,
  required Axis direction,
  required int crossCount,
}) {
  if (enable) {
    fadeAnimations.clear();
    slideAnimations.clear();

    // slideAnimations
    for (final end in newItems.asMap().keys) {
      int from = oldItems.indexOf(newItems[end]);

      slideAnimations.add(createGridItemSlideAnimation(
        enable: enable,
        itemSize: itemSize,
        direction: direction,
        crossCount: crossCount,
        animateController: animateController,
        crossAxisSpacing: crossAxisSpacing,
        mainAxisSpacing: mainAxisSpacing,
        from: from != -1 ? from : end,
        end: end,
      ));
    }

    // fadeAnimations
    for (final obj in newItems.asMap().entries) {
      if (obj.key >= oldItems.length) {
        fadeAnimations.add(null);
        continue;
      }

      if (oldItems.any((old) => old == obj.value)) {
        fadeAnimations.add(null);
        continue;
      }

      fadeAnimations.add(createGridItemFadeAnimation(
        animateController: animateController,
        enable: enable,
      ));
    }

    animateController.reset();
    animateController.forward();
  }
}