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

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

Issue 1232673003: Delete drawerController and make drawer handle back behavior natively (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: fix settings page of fitness app 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 | « sky/sdk/example/stocks/lib/main.dart ('k') | sky/sdk/lib/widgets/drawer.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 a5436b9f30559ae8c9ac871525a6b7e7e9892978..5ee1905edeb3a2948022b57b27d9f63e80937cae 100644
--- a/sky/sdk/example/stocks/lib/stock_home.dart
+++ b/sky/sdk/example/stocks/lib/stock_home.dart
@@ -37,11 +37,7 @@ const Duration _kSnackbarSlideDuration = const Duration(milliseconds: 200);
class StockHome extends AnimatedComponent {
- StockHome(this.navigator, this.stocks, this.stockMode, this.modeUpdater) {
- // if (debug)
- // new Timer(new Duration(seconds: 1), dumpState);
- _drawerController = new DrawerController(_handleDrawerStatusChanged);
- }
+ StockHome(this.navigator, this.stocks, this.stockMode, this.modeUpdater);
Navigator navigator;
List<Stock> stocks;
@@ -88,15 +84,22 @@ class StockHome extends AnimatedComponent {
});
}
- DrawerController _drawerController;
bool _drawerShowing = false;
+ DrawerStatus _drawerStatus = DrawerStatus.inactive;
+
+ void _handleOpenDrawer() {
+ setState(() {
+ _drawerShowing = true;
+ _drawerStatus = DrawerStatus.active;
+ });
+ }
- void _handleDrawerStatusChanged(bool showing) {
- if (!showing && navigator.currentRoute.name == "/drawer") {
+ void _handleDrawerStatusChange(DrawerStatus status) {
+ if (status == DrawerStatus.inactive && navigator.currentRoute.name == "/drawer") {
navigator.pop();
}
setState(() {
- _drawerShowing = showing;
+ _drawerStatus = status;
});
}
@@ -138,9 +141,13 @@ class StockHome extends AnimatedComponent {
}
Drawer buildDrawer() {
+ if (_drawerStatus == DrawerStatus.inactive)
+ return null;
return new Drawer(
- controller: _drawerController,
level: 3,
+ showing: _drawerShowing,
+ onStatusChanged: _handleDrawerStatusChange,
+ navigator: navigator,
children: [
new DrawerHeader(children: [new Text('Stocks')]),
new DrawerItem(
@@ -178,19 +185,10 @@ class StockHome extends AnimatedComponent {
}
void _handleShowSettings() {
- assert(navigator.currentRoute.name == '/drawer');
navigator.pop();
- assert(navigator.currentRoute.name == '/');
navigator.pushNamed('/settings');
}
- void _handleOpenDrawer() {
- _drawerController.open();
- navigator.pushState("/drawer", (_) {
- _drawerController.close();
- });
- }
-
Widget buildToolBar() {
return new ToolBar(
left: new IconButton(
@@ -325,7 +323,7 @@ class StockHome extends AnimatedComponent {
body: buildTabNavigator(),
snackBar: buildSnackBar(),
floatingActionButton: buildFloatingActionButton(),
- drawer: _drawerShowing ? buildDrawer() : null
+ drawer: buildDrawer()
),
];
addMenuToOverlays(overlays);
« no previous file with comments | « sky/sdk/example/stocks/lib/main.dart ('k') | sky/sdk/lib/widgets/drawer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698