| OLD | NEW |
| 1 part of widgets; | 1 part of widgets; |
| 2 | 2 |
| 3 const double _kWidth = 256.0; | 3 const double _kWidth = 256.0; |
| 4 const double _kMinFlingVelocity = 0.4; | 4 const double _kMinFlingVelocity = 0.4; |
| 5 const double _kMinAnimationDurationMS = 246.0; | 5 const double _kBaseSettleDurationMS = 246.0; |
| 6 const double _kMaxAnimationDurationMS = 600.0; | 6 const double _kMaxSettleDurationMS = 600.0; |
| 7 const Cubic _kAnimationCurve = easeOut; | 7 const Cubic _kAnimationCurve = easeOut; |
| 8 | 8 |
| 9 class DrawerAnimation { | 9 class DrawerAnimation { |
| 10 | 10 |
| 11 Stream<double> get onPositionChanged => _controller.stream; | 11 Stream<double> get onPositionChanged => _controller.stream; |
| 12 | 12 |
| 13 StreamController _controller; | 13 StreamController _controller; |
| 14 AnimationGenerator _animation; | 14 AnimationGenerator _animation; |
| 15 double _position; | 15 double _position; |
| 16 bool get _isAnimating => _animation != null; | 16 bool get _isAnimating => _animation != null; |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 _animation = new AnimationGenerator(duration, begin: begin, end: end, | 66 _animation = new AnimationGenerator(duration, begin: begin, end: end, |
| 67 curve: curve); | 67 curve: curve); |
| 68 | 68 |
| 69 _animation.onTick.listen(_setPosition, onDone: () { | 69 _animation.onTick.listen(_setPosition, onDone: () { |
| 70 _animation = null; | 70 _animation = null; |
| 71 }); | 71 }); |
| 72 } | 72 } |
| 73 | 73 |
| 74 void _animateToPosition(double targetPosition) { | 74 void _animateToPosition(double targetPosition) { |
| 75 double distance = (targetPosition - _position).abs(); | 75 double distance = (targetPosition - _position).abs(); |
| 76 double duration = math.max( | 76 double targetDuration = distance / _kWidth * _kBaseSettleDurationMS; |
| 77 _kMinAnimationDurationMS, | 77 double duration = math.min(targetDuration, _kMaxSettleDurationMS); |
| 78 _kMaxAnimationDurationMS * distance / _kWidth); | |
| 79 | |
| 80 _animate(duration, _position, targetPosition, _kAnimationCurve); | 78 _animate(duration, _position, targetPosition, _kAnimationCurve); |
| 81 } | 79 } |
| 82 | 80 |
| 83 void handleFlingStart(event) { | 81 void handleFlingStart(event) { |
| 84 double direction = event.velocityX.sign; | 82 double direction = event.velocityX.sign; |
| 85 double velocityX = event.velocityX.abs() / 1000; | 83 double velocityX = event.velocityX.abs() / 1000; |
| 86 if (velocityX < _kMinFlingVelocity) | 84 if (velocityX < _kMinFlingVelocity) |
| 87 return; | 85 return; |
| 88 | 86 |
| 89 double targetPosition = direction < 0.0 ? -_kWidth : 0.0; | 87 double targetPosition = direction < 0.0 ? -_kWidth : 0.0; |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 new Container( | 189 new Container( |
| 192 key: 'Content', | 190 key: 'Content', |
| 193 style: _contentStyle, | 191 style: _contentStyle, |
| 194 inlineStyle: contentInlineStyle, | 192 inlineStyle: contentInlineStyle, |
| 195 children: children | 193 children: children |
| 196 ) | 194 ) |
| 197 ] | 195 ] |
| 198 ); | 196 ); |
| 199 } | 197 } |
| 200 } | 198 } |
| OLD | NEW |