Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Side by Side Diff: sky/examples/fn/widgets/drawer.dart

Issue 980043005: fix the hang when clicking the drawer in the stocks app (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | sky/framework/animation/generator.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 _kBaseSettleDurationMS = 246.0; 5 const double _kBaseSettleDurationMS = 246.0;
6 const double _kMaxSettleDurationMS = 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
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 targetDuration = distance / _kWidth * _kBaseSettleDurationMS; 76 if (distance != 0) {
77 double duration = math.min(targetDuration, _kMaxSettleDurationMS); 77 double targetDuration = distance / _kWidth * _kBaseSettleDurationMS;
78 _animate(duration, _position, targetPosition, _kAnimationCurve); 78 double duration = math.min(targetDuration, _kMaxSettleDurationMS);
79 _animate(duration, _position, targetPosition, _kAnimationCurve);
80 }
79 } 81 }
80 82
81 void handleFlingStart(event) { 83 void handleFlingStart(event) {
82 double direction = event.velocityX.sign; 84 double direction = event.velocityX.sign;
83 double velocityX = event.velocityX.abs() / 1000; 85 double velocityX = event.velocityX.abs() / 1000;
84 if (velocityX < _kMinFlingVelocity) 86 if (velocityX < _kMinFlingVelocity)
85 return; 87 return;
86 88
87 double targetPosition = direction < 0.0 ? -_kWidth : 0.0; 89 double targetPosition = direction < 0.0 ? -_kWidth : 0.0;
88 double distance = (targetPosition - _position).abs(); 90 double distance = (targetPosition - _position).abs();
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 style: _style, 178 style: _style,
177 inlineStyle: inlineStyle, 179 inlineStyle: inlineStyle,
178 children: [ mask, content ] 180 children: [ mask, content ]
179 )..events.listen('pointerdown', animation.handlePointerDown) 181 )..events.listen('pointerdown', animation.handlePointerDown)
180 ..events.listen('pointermove', animation.handlePointerMove) 182 ..events.listen('pointermove', animation.handlePointerMove)
181 ..events.listen('pointerup', animation.handlePointerUp) 183 ..events.listen('pointerup', animation.handlePointerUp)
182 ..events.listen('pointercancel', animation.handlePointerCancel); 184 ..events.listen('pointercancel', animation.handlePointerCancel);
183 185
184 } 186 }
185 } 187 }
OLDNEW
« no previous file with comments | « no previous file | sky/framework/animation/generator.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698