initDistanceAnimation method

void initDistanceAnimation(
  1. RayAnimationConfig config
)

initialize distance animation

Implementation

void initDistanceAnimation(RayAnimationConfig config) {
  if (!config.enabled) {
    distanceAnimation = ConstantTween<double>(0).animate(widget.controller);
    return;
  }

  double entryDelay = config.randomizeStartDelay
      ? MathUtil.randDouble(0.3)
      : config.animationStartDelay;

  double finishDelay = config.randomizeFinishDelay
      ? MathUtil.randDouble(0.3)
      : config.animationFinishDelay;

  List<TweenSequenceItem<double>> sequenceItemList = [];

  if (entryDelay > 0) {
    sequenceItemList.add(
        TweenSequenceItem(
            tween: Tween<double>(
              begin: -widget.fanSlice.height,
              end: 0,
            ),
            weight: entryDelay
        )
    );
  }

  TweenSequenceItem(
      tween: Tween(begin: -widget.fanSlice.height, end: 0.0),
      weight: 1 - entryDelay - finishDelay
  );

  if (finishDelay > 0) {
    sequenceItemList.add(
        TweenSequenceItem(
            tween: ConstantTween(0),
            weight: finishDelay
        )
    );
  }

  var curve = config.curve;
  if (config.randomizeStartDelay) {
    curve = Interval(
        MathUtil.randDouble(0.5),
        1,
        curve: curve
    );
  }
  distanceAnimation = TweenSequence<double>(
      sequenceItemList
  ).animate(
      CurvedAnimation(
          parent: widget.controller,
          curve: curve
      )
  );
}