AnimationControllerManager constructor

AnimationControllerManager({
  1. required List<TriggerValWithControllerEntry> controllers,
  2. ValueNotifier<TriggerValWithControllerEntry?>? notifier,
  3. int initIndex = 0,
})

Implementation

AnimationControllerManager(
    {required List<TriggerValWithControllerEntry> controllers,
    this.notifier,
    this.initIndex = 0}) {
  //这里的代码可以优化成一次性完成所有的工作 但是可读性差  反正是初始化 不如分步做
  for (var controller in controllers) {
    super.controllers.add(controller);
  }
  var controllerLinkedList = super.controllers;
  if (initIndex == 0) {
    nextAliveControllerEntry = controllerLinkedList.first;
    storePointOffset = 0.0;
    return;
  }
  if (initIndex == controllerLinkedList.length) {
    for (var c in controllers) {
      c.controller.forward();
    }
    storePointOffset = 1.0;
    return;
  }
  //
  nextAliveControllerEntry = controllers[initIndex];
  storePointOffset = controllers[initIndex - 1].triggerValue;
  for (int i = 0; i < controllers.length; ++i) {
    if (i == initIndex) break;
    controllers[i].controller.forward();
  }
}