20 lines
933 B
Markdown
20 lines
933 B
Markdown
# Motion Physics Rule
|
|
|
|
All M3 Expressive animations must use physics-based springs instead of fixed durations/easing where possible.
|
|
|
|
## Spatial Springs
|
|
Use for movement, position, and layout changes.
|
|
- **Goal**: Mirror real-world object physics.
|
|
- **Flutter Implementation**: `Curves.elasticOut`, `Curves.bounceOut`, or `SpringSimulation`.
|
|
- **Primary Curve**: `Cubic(0.34, 1.56, 0.64, 1)` (The Expressive Curve).
|
|
|
|
## Effects Springs
|
|
Use for non-spatial properties like color, opacity, and scale.
|
|
- **Goal**: Smooth, responsive transitions.
|
|
- **Flutter Implementation**: `Curves.easeInOutCubic` or `Curves.fastOutSlowIn`.
|
|
|
|
## Standards
|
|
1. **Interactive Feedback**: All touch interactions must trigger a scale or translation response using a Spatial spring.
|
|
2. **Speed**: Response must be immediate (<50ms start) even if the settling takes longer.
|
|
3. **Co-ordination**: Co-ordinate visual motion with `HapticFeedback.lightImpact()`.
|