lerp method
Linear interpolation between two tokens
Implementation
FlySpacingToken lerp(FlySpacingToken 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 FlySpacingToken(
base: result['base']!,
px: result['px']!,
s0: result['s0']!,
s05: result['s05']!,
s1: result['s1']!,
s15: result['s15']!,
s2: result['s2']!,
s25: result['s25']!,
s3: result['s3']!,
s35: result['s35']!,
s4: result['s4']!,
s5: result['s5']!,
s6: result['s6']!,
s7: result['s7']!,
s8: result['s8']!,
s9: result['s9']!,
s10: result['s10']!,
s11: result['s11']!,
s12: result['s12']!,
s14: result['s14']!,
s16: result['s16']!,
s20: result['s20']!,
s24: result['s24']!,
s28: result['s28']!,
s32: result['s32']!,
s36: result['s36']!,
s40: result['s40']!,
s44: result['s44']!,
s48: result['s48']!,
s52: result['s52']!,
s56: result['s56']!,
s60: result['s60']!,
s64: result['s64']!,
s72: result['s72']!,
s80: result['s80']!,
s96: result['s96']!,
extras: Map.fromEntries(
result.entries.where(
(e) => ![
'base',
'px',
's0',
's05',
's1',
's15',
's2',
's25',
's3',
's35',
's4',
's5',
's6',
's7',
's8',
's9',
's10',
's11',
's12',
's14',
's16',
's20',
's24',
's28',
's32',
's36',
's40',
's44',
's48',
's52',
's56',
's60',
's64',
's72',
's80',
's96',
].contains(e.key),
),
),
);
}