Commit 63d3b6db authored by Ian Hickson's avatar Ian Hickson

Merge pull request #1183 from Hixie/dismissable

Be more explicit about what's state in dismissable
parents 12a09822 adf7c48d
...@@ -75,14 +75,6 @@ class Dismissable extends StatefulComponent { ...@@ -75,14 +75,6 @@ class Dismissable extends StatefulComponent {
_startResizePerformance(); _startResizePerformance();
} }
Point get _activeCardDragEndPoint {
if (!_isActive)
return Point.origin;
assert(_size != null);
double extent = _directionIsYAxis ? _size.height : _size.width;
return new Point(_dragExtent.sign * extent * _kDismissCardThreshold, 0.0);
}
bool get _isActive { bool get _isActive {
return _size != null && (_dragUnderway || _fadePerformance.isAnimating); return _size != null && (_dragUnderway || _fadePerformance.isAnimating);
} }
...@@ -120,9 +112,11 @@ class Dismissable extends StatefulComponent { ...@@ -120,9 +112,11 @@ class Dismissable extends StatefulComponent {
void _handleDragStart() { void _handleDragStart() {
if (_fadePerformance.isAnimating) if (_fadePerformance.isAnimating)
return; return;
_dragUnderway = true; setState(() {
_dragExtent = 0.0; _dragUnderway = true;
_fadePerformance.progress = 0.0; _dragExtent = 0.0;
_fadePerformance.progress = 0.0;
});
} }
void _handleDragUpdate(double scrollOffset) { void _handleDragUpdate(double scrollOffset) {
...@@ -149,8 +143,14 @@ class Dismissable extends StatefulComponent { ...@@ -149,8 +143,14 @@ class Dismissable extends StatefulComponent {
break; break;
} }
if (oldDragExtent.sign != _dragExtent.sign) if (oldDragExtent.sign != _dragExtent.sign) {
setState(() {}); // Rebuild to update the new drag endpoint. setState(() {
// Rebuild to update the new drag endpoint.
// The sign of _dragExtent is part of our build state;
// the actual value is not, it's just used to configure
// the performances.
});
}
if (!_fadePerformance.isAnimating) if (!_fadePerformance.isAnimating)
_fadePerformance.progress = _dragExtent.abs() / (_size.width * _kDismissCardThreshold); _fadePerformance.progress = _dragExtent.abs() / (_size.width * _kDismissCardThreshold);
} }
...@@ -188,16 +188,18 @@ class Dismissable extends StatefulComponent { ...@@ -188,16 +188,18 @@ class Dismissable extends StatefulComponent {
if (!_isActive || _fadePerformance.isAnimating) if (!_isActive || _fadePerformance.isAnimating)
return; return;
_dragUnderway = false; setState(() {
if (_fadePerformance.isCompleted) { _dragUnderway = false;
_startResizePerformance(); if (_fadePerformance.isCompleted) {
} else if (_isFlingGesture(velocity)) { _startResizePerformance();
double flingVelocity = _directionIsYAxis ? velocity.dy : velocity.dx; } else if (_isFlingGesture(velocity)) {
_dragExtent = flingVelocity.sign; double flingVelocity = _directionIsYAxis ? velocity.dy : velocity.dx;
_fadePerformance.fling(velocity: flingVelocity.abs() * _kFlingVelocityScale); _dragExtent = flingVelocity.sign;
} else { _fadePerformance.fling(velocity: flingVelocity.abs() * _kFlingVelocityScale);
_fadePerformance.reverse(); } else {
} _fadePerformance.reverse();
}
});
} }
void _handleSizeChanged(Size newSize) { void _handleSizeChanged(Size newSize) {
...@@ -206,6 +208,14 @@ class Dismissable extends StatefulComponent { ...@@ -206,6 +208,14 @@ class Dismissable extends StatefulComponent {
}); });
} }
Point get _activeCardDragEndPoint {
if (!_isActive)
return Point.origin;
assert(_size != null);
double extent = _directionIsYAxis ? _size.height : _size.width;
return new Point(_dragExtent.sign * extent * _kDismissCardThreshold, 0.0);
}
Widget build() { Widget build() {
if (_resizePerformance != null) { if (_resizePerformance != null) {
AnimatedValue<double> squashAxisExtent = new AnimatedValue<double>( AnimatedValue<double> squashAxisExtent = new AnimatedValue<double>(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment