lerp method

Linear interpolation between two tokens

Implementation

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

  for (final key in allKeys) {
    final valueA = _allValues[key];
    final valueB = other._allValues[key];
    if (valueA != null && valueB != null) {
      result[key] = TextStyle.lerp(valueA, valueB, t) ?? valueA;
    } else if (valueA != null) {
      result[key] = valueA;
    } else if (valueB != null) {
      result[key] = valueB;
    }
  }

  return FlyTextStyleToken(
    xs: result['xs']!,
    sm: result['sm']!,
    base: result['base']!,
    lg: result['lg']!,
    xl: result['xl']!,
    xl2: result['xl2']!,
    xl3: result['xl3']!,
    xl4: result['xl4']!,
    xl5: result['xl5']!,
    xl6: result['xl6']!,
    xl7: result['xl7']!,
    xl8: result['xl8']!,
    xl9: result['xl9']!,
    extras: Map.fromEntries(
      result.entries.where(
        (e) => ![
          'xs',
          'sm',
          'base',
          'lg',
          'xl',
          'xl2',
          'xl3',
          'xl4',
          'xl5',
          'xl6',
          'xl7',
          'xl8',
          'xl9',
        ].contains(e.key),
      ),
    ),
  );
}