material_3_expressive/packages/m3e_design/lib/tokens/motion_tokens.dart
Emily Pauli 62ecb86b76 Add initial configuration, tokens, and widgets for M3E components
- Introduced `.gitignore` and `.metadata` for apps and examples.
- Added Flutter/Dart analysis configurations (`analysis_options.yaml`).
- Implemented foundational tokens and themes for M3E (colors, shapes).
- Created base implementations for `IconButtonM3E` and `SplitButtonM3E`.
- Set up CI workflow (`ci.yaml`) to automate testing and analysis.
2025-10-21 22:15:15 +02:00

43 lines
1.4 KiB
Dart

import 'package:flutter/material.dart';
@immutable
class M3EMotion {
final SpringDescription spatialFast;
final SpringDescription spatialMedium;
final SpringDescription spatialGentle;
final SpringDescription effectsFast;
final SpringDescription effectsMedium;
final Duration fast;
final Duration medium;
final Duration slow;
const M3EMotion({
required this.spatialFast,
required this.spatialMedium,
required this.spatialGentle,
required this.effectsFast,
required this.effectsMedium,
required this.fast,
required this.medium,
required this.slow,
});
const M3EMotion.expressive()
: spatialFast = const SpringDescription(mass: 1, stiffness: 500, damping: 30),
spatialMedium = const SpringDescription(mass: 1, stiffness: 350, damping: 28),
spatialGentle = const SpringDescription(mass: 1, stiffness: 220, damping: 24),
effectsFast = const SpringDescription(mass: 1, stiffness: 420, damping: 32),
effectsMedium = const SpringDescription(mass: 1, stiffness: 280, damping: 28),
fast = const Duration(milliseconds: 150),
medium = const Duration(milliseconds: 250),
slow = const Duration(milliseconds: 400);
static M3EMotion lerp(M3EMotion a, M3EMotion b, double t) => a;
}
class SpringDescription {
final double mass, stiffness, damping;
const SpringDescription({required this.mass, required this.stiffness, required this.damping});
}