lerp method

Linear interpolation between two tokens

Implementation

FlyLeadingToken lerp(FlyLeadingToken other, double t) {
  final result = <String, double>{};
  final allKeys = {..._allValues.keys, ...other._allValues.keys};

  for (final key in allKeys) {
    final valueA = _allValues[key];
    final valueB = other._allValues[key];
    final numA = valueA ?? 0.0;
    final numB = valueB ?? 0.0;
    result[key] = numA + (numB - numA) * t;
  }

  return FlyLeadingToken(
    tight: result['tight']!,
    snug: result['snug']!,
    normal: result['normal']!,
    relaxed: result['relaxed']!,
    loose: result['loose']!,
    extras: Map.fromEntries(
      result.entries.where(
        (e) =>
            !['tight', 'snug', 'normal', 'relaxed', 'loose'].contains(e.key),
      ),
    ),
  );
}