validate method

bool validate()

Performs minimal validation on the tracks. Returns true if valid.

This method logs errors to the console, if a track is empty, if the size is not valid, if an item in the times or values array is not a valid number or if the items in the times array are out of order.

Implementation

bool validate() {
  bool valid = true;

  final valueSize = getValueSize();
  if (valueSize - valueSize.floor() != 0) {
    console.warning('KeyframeTrack: Invalid value size in track. $this');
    valid = false;
  }

  final times = this.times, values = this.values, nKeys = times.length;

  if (nKeys == 0) {
    console.warning('KeyframeTrack: Track is empty. $this');
    valid = false;
  }

  num? prevTime;

  for (int i = 0; i != nKeys; i++) {
    final currTime = times[i];

    if (currTime.isNaN) {
      console.warning('KeyframeTrack: Time is not a valid number. $this i: $i $currTime');
      valid = false;
      break;
    }

    if (prevTime != null && prevTime > currTime) {
      console.warning('KeyframeTrack: Out of order keys.$this i: $i currTime: $currTime prevTime: $prevTime');
      valid = false;
      break;
    }
    prevTime = currTime;
  }

  if (AnimationUtils.isTypedArray(values)) {
    for (int i = 0, n = values.length; i != n; ++i) {
      final value = values[i];

      if (value.isNaN) {
        console.warning('KeyframeTrack: Value is not a valid number. $this i: $i value: $value');
        valid = false;
        break;
      }
    }
  }

  return valid;
}