Force AnimatedVariables to hit begin on 0.0

We already forced hitting end on 1.0.

Fixes #1358
diff --git a/packages/flutter/lib/src/animation/animated_value.dart b/packages/flutter/lib/src/animation/animated_value.dart
index 68da613..732c8f2 100644
--- a/packages/flutter/lib/src/animation/animated_value.dart
+++ b/packages/flutter/lib/src/animation/animated_value.dart
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import "dart:sky";
+import 'dart:sky' show Color, Rect;
 
 import 'package:sky/src/animation/curves.dart';
 
@@ -16,8 +16,8 @@
 }
 
 /// An interface describing a variable that changes as an animation progresses.
-/// 
-/// AnimatedVariables, by convention, must be cheap to create. This allows them to be used in 
+///
+/// AnimatedVariables, by convention, must be cheap to create. This allows them to be used in
 /// build functions in Widgets.
 abstract class AnimatedVariable {
   /// Update the variable to a given time in an animation that is running in the given direction
@@ -57,12 +57,12 @@
     Interval interval = _getInterval(direction);
     if (interval != null)
       t = interval.transform(t);
-    if (t == 1.0) // Or should we support inverse curves?
+    assert(t >= 0.0 && t <= 1.0);
+    if (t == 0.0 || t == 1.0) {
+      assert(t == _applyCurve(t, direction).round().toDouble());
       return t;
-    Curve curve = _getCurve(direction);
-    if (curve != null)
-      t = curve.transform(t);
-    return t;
+    }
+    return _applyCurve(t, direction);
   }
 
   Interval _getInterval(Direction direction) {
@@ -76,6 +76,13 @@
       return curve;
     return reverseCurve;
   }
+
+  double _applyCurve(double t, Direction direction) {
+    Curve curve = _getCurve(direction);
+    if (curve == null)
+      return t;
+    return curve.transform(t);
+  }
 }
 
 /// An animated variable with a concrete type
@@ -101,7 +108,12 @@
   void setProgress(double t, Direction direction) {
     if (end != null) {
       t = transform(t, direction);
-      value = (t == 1.0) ? end : lerp(t);
+      if (t == 0.0)
+        value = begin;
+      else if (t == 1.0)
+        value = end;
+      else
+        value = lerp(t);
     }
   }
 
diff --git a/packages/flutter/lib/src/widgets/dismissable.dart b/packages/flutter/lib/src/widgets/dismissable.dart
index fe270ab..6cb2a78 100644
--- a/packages/flutter/lib/src/widgets/dismissable.dart
+++ b/packages/flutter/lib/src/widgets/dismissable.dart
@@ -102,11 +102,6 @@
         ..addListener(_handleResizeProgressChanged);
       _resizePerformance.play();
     });
-    // Our squash curve (ease) does not return v=0.0 for t=0.0, so we
-    // technically resize on the first frame. To make sure this doesn't confuse
-    // any other widgets (like MixedViewport, which checks for this kind of
-    // thing), we report a resize straight away.
-    _maybeCallOnResized();
   }
 
   void _handleResizeProgressChanged() {