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

Unified Diff: sky/examples/stocks2/lib/stock_home.dart

Issue 1191153002: Make back button control drawer in stocks app (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: abarth feedback Created 5 years, 6 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/examples/stocks2/lib/stock_app.dart ('k') | sky/examples/widgets/navigation.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/examples/stocks2/lib/stock_home.dart
diff --git a/sky/examples/stocks2/lib/stock_home.dart b/sky/examples/stocks2/lib/stock_home.dart
index cc98bb8f7e6d8b5d14c32975933d5bace7bcc06d..a0e8ce371506c4275c925b3bf0bb6e14b556f823 100644
--- a/sky/examples/stocks2/lib/stock_home.dart
+++ b/sky/examples/stocks2/lib/stock_home.dart
@@ -29,19 +29,19 @@ enum StockMode { optimistic, pessimistic }
class StockHome extends Component {
- StockHome(this._navigator) {
+ StockHome(this.navigator, RouteBase route, this.stocks) : super(stateful: true) {
// if (debug)
// new Timer(new Duration(seconds: 1), dumpState);
- new StockDataFetcher((StockData data) {
- setState(() {
- data.appendTo(_stocks);
- });
- });
_drawerController = new DrawerController(_handleDrawerStatusChanged);
}
- List<Stock> _stocks = [];
- Navigator _navigator;
+ void syncFields(StockHome source) {
+ navigator = source.navigator;
+ stocks = source.stocks;
+ }
+
+ Navigator navigator;
+ List<Stock> stocks;
bool _isSearching = false;
String _searchQuery;
@@ -69,6 +69,9 @@ class StockHome extends Component {
bool _drawerShowing = false;
void _handleDrawerStatusChanged(bool showing) {
+ if (!showing && navigator.currentRoute.name == "/drawer") {
+ navigator.pop();
+ }
setState(() {
_drawerShowing = showing;
});
@@ -137,7 +140,7 @@ class StockHome extends Component {
new MenuDivider(),
new MenuItem(
icon: 'action/settings',
- onPressed: () => _navigator.pushNamed('/settings'),
+ onPressed: () => navigator.pushNamed('/settings'),
children: [new Text('Settings')]),
new MenuItem(
icon: 'action/help',
@@ -146,11 +149,18 @@ class StockHome extends Component {
);
}
+ void _handleOpenDrawer() {
+ _drawerController.open();
+ navigator.pushState("/drawer", (_) {
+ _drawerController.close();
+ });
+ }
+
Widget buildToolBar() {
return new ToolBar(
left: new IconButton(
icon: 'navigation/menu_white',
- onPressed: _drawerController.toggle),
+ onPressed: _handleOpenDrawer),
center: new Text('Stocks', style: typography.white.title),
right: [
new IconButton(
@@ -194,7 +204,7 @@ class StockHome extends Component {
List<Widget> overlays = [
new Scaffold(
toolbar: _isSearching ? buildSearchBar() : buildToolBar(),
- body: new Stocklist(stocks: _stocks, query: _searchQuery),
+ body: new Stocklist(stocks: stocks, query: _searchQuery),
floatingActionButton: new FloatingActionButton(
child: new Icon(type: 'content/add_white', size: 24)
),
« no previous file with comments | « sky/examples/stocks2/lib/stock_app.dart ('k') | sky/examples/widgets/navigation.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698