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

Unified Diff: sky/sdk/example/stocks/lib/stock_home.dart

Issue 1233433002: Animate the snack bar in the stocks app. (Closed) Base URL: git@github.com:/domokit/mojo.git@master
Patch Set: renmae Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | sky/sdk/lib/widgets/animated_component.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/sdk/example/stocks/lib/stock_home.dart
diff --git a/sky/sdk/example/stocks/lib/stock_home.dart b/sky/sdk/example/stocks/lib/stock_home.dart
index 30471b8a436debe7b9b95d451cb6cae949ad2ac6..0ef7b1e7118c22bc49f31b60c879afd40de6e829 100644
--- a/sky/sdk/example/stocks/lib/stock_home.dart
+++ b/sky/sdk/example/stocks/lib/stock_home.dart
@@ -3,6 +3,9 @@
// found in the LICENSE file.
import 'package:sky/editing/input.dart';
+import 'package:sky/animation/animation_performance.dart';
+import 'package:sky/widgets/animated_component.dart';
+import 'package:sky/widgets/animated_container.dart';
import 'package:sky/widgets/basic.dart';
import 'package:sky/widgets/drawer.dart';
import 'package:sky/widgets/drawer_header.dart';
@@ -29,7 +32,9 @@ import 'stock_types.dart';
typedef void ModeUpdater(StockMode mode);
-class StockHome extends StatefulComponent {
+const Duration _kSnackbarSlideDuration = const Duration(milliseconds: 200);
+
+class StockHome extends AnimatedComponent {
StockHome(this.navigator, this.stocks, this.stockMode, this.modeUpdater) {
// if (debug)
@@ -52,7 +57,7 @@ class StockHome extends StatefulComponent {
bool _isSearching = false;
String _searchQuery;
- bool _isShowingSnackBar = false;
+ AnimatedContainer _snackbarTransform;
void _handleSearchBegin() {
setState(() {
@@ -248,30 +253,39 @@ class StockHome extends StatefulComponent {
void _handleUndo() {
setState(() {
- _isShowingSnackBar = false;
+ _snackbarTransform = null;
});
}
Widget buildSnackBar() {
- if (!_isShowingSnackBar)
+ if (_snackbarTransform == null)
return null;
- return new SnackBar(
- content: new Text("Stock purchased!"),
- actions: [new SnackBarAction(label: "UNDO", onPressed: _handleUndo)]
- );
+ return _snackbarTransform.build(
+ new SnackBar(
+ content: new Text("Stock purchased!"),
+ actions: [new SnackBarAction(label: "UNDO", onPressed: _handleUndo)]
+ ));
}
void _handleStockPurchased() {
setState(() {
- _isShowingSnackBar = true;
+ _snackbarTransform = new AnimatedContainer()
+ ..position = new AnimatedType<Point>(const Point(0.0, 45.0), end: Point.origin);
+ var performance = _snackbarTransform.createPerformance(
+ _snackbarTransform.position, duration: _kSnackbarSlideDuration);
+ watchPerformance(performance);
+ performance.play();
});
}
Widget buildFloatingActionButton() {
- return new FloatingActionButton(
+ var widget = new FloatingActionButton(
child: new Icon(type: 'content/add_white', size: 24),
onPressed: _handleStockPurchased
);
+ if (_snackbarTransform != null)
+ widget = _snackbarTransform.build(widget);
+ return widget;
}
void addMenuToOverlays(List<Widget> overlays) {
« no previous file with comments | « no previous file | sky/sdk/lib/widgets/animated_component.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698