| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 import 'package:sky/editing/input.dart'; | 5 import 'package:sky/editing/input.dart'; |
| 6 import 'package:sky/widgets/basic.dart'; | 6 import 'package:sky/widgets/basic.dart'; |
| 7 import 'package:sky/widgets/drawer.dart'; | 7 import 'package:sky/widgets/drawer.dart'; |
| 8 import 'package:sky/widgets/drawer_header.dart'; | 8 import 'package:sky/widgets/drawer_header.dart'; |
| 9 import 'package:sky/widgets/floating_action_button.dart'; | 9 import 'package:sky/widgets/floating_action_button.dart'; |
| 10 import 'package:sky/widgets/icon.dart'; | 10 import 'package:sky/widgets/icon.dart'; |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 ] | 157 ] |
| 158 ); | 158 ); |
| 159 } | 159 } |
| 160 | 160 |
| 161 void _handleOpenDrawer() { | 161 void _handleOpenDrawer() { |
| 162 _drawerController.open(); | 162 _drawerController.open(); |
| 163 navigator.pushState("/drawer", (_) { | 163 navigator.pushState("/drawer", (_) { |
| 164 _drawerController.close(); | 164 _drawerController.close(); |
| 165 }); | 165 }); |
| 166 } | 166 } |
| 167 | 167 |
| 168 Widget buildToolBar() { | 168 Widget buildToolBar() { |
| 169 return new ToolBar( | 169 return new ToolBar( |
| 170 left: new IconButton( | 170 left: new IconButton( |
| 171 icon: 'navigation/menu_white', | 171 icon: 'navigation/menu_white', |
| 172 onPressed: _handleOpenDrawer), | 172 onPressed: _handleOpenDrawer), |
| 173 center: new Text('Stocks'), | 173 center: new Text('Stocks'), |
| 174 right: [ | 174 right: [ |
| 175 new IconButton( | 175 new IconButton( |
| 176 icon: 'action/search_white', | 176 icon: 'action/search_white', |
| 177 onPressed: _handleSearchBegin), | 177 onPressed: _handleSearchBegin), |
| 178 new IconButton( | 178 new IconButton( |
| 179 icon: 'navigation/more_vert_white', | 179 icon: 'navigation/more_vert_white', |
| 180 onPressed: _handleMenuShow) | 180 onPressed: _handleMenuShow) |
| 181 ] | 181 ] |
| 182 ); | 182 ); |
| 183 } | 183 } |
| 184 | 184 |
| 185 int selectedTabIndex = 0; | 185 int selectedTabIndex = 0; |
| 186 List<String> portfolioSymbols = ["AAPL","FIZZ", "FIVE", "FLAT", "ZINC", "ZNGA"
]; | 186 List<String> portfolioSymbols = ["AAPL","FIZZ", "FIVE", "FLAT", "ZINC", "ZNGA"
]; |
| 187 | 187 |
| 188 Iterable<Stock> _filterByPortfolio(Iterable<Stock> stocks) { |
| 189 return stocks.where((stock) => portfolioSymbols.contains(stock.symbol)); |
| 190 } |
| 191 |
| 192 Iterable<Stock> _filterBySearchQuery(Iterable<Stock> stocks) { |
| 193 if (_searchQuery == null) |
| 194 return stocks; |
| 195 RegExp regexp = new RegExp(_searchQuery, caseSensitive: false); |
| 196 return stocks.where((stock) => stock.symbol.contains(regexp)); |
| 197 } |
| 198 |
| 199 Widget buildMarketStockList() { |
| 200 return new Stocklist(stocks: _filterBySearchQuery(stocks).toList()); |
| 201 } |
| 202 |
| 188 Widget buildPortfolioStocklist() { | 203 Widget buildPortfolioStocklist() { |
| 189 return new Stocklist( | 204 return new Stocklist(stocks: _filterBySearchQuery(_filterByPortfolio(stocks)
).toList()); |
| 190 stocks: stocks.where((s) => portfolioSymbols.contains(s.symbol)).toList(), | |
| 191 query: _searchQuery | |
| 192 ); | |
| 193 } | 205 } |
| 194 | 206 |
| 195 Widget buildTabNavigator() { | 207 Widget buildTabNavigator() { |
| 196 List<TabNavigatorView> views = <TabNavigatorView>[ | 208 List<TabNavigatorView> views = <TabNavigatorView>[ |
| 197 new TabNavigatorView( | 209 new TabNavigatorView( |
| 198 label: const TabLabel(text: 'MARKET'), | 210 label: const TabLabel(text: 'MARKET'), |
| 199 builder: () => new Stocklist(stocks: stocks, query: _searchQuery) | 211 builder: buildMarketStockList |
| 200 ), | 212 ), |
| 201 new TabNavigatorView( | 213 new TabNavigatorView( |
| 202 label: const TabLabel(text: 'PORTFOLIO'), | 214 label: const TabLabel(text: 'PORTFOLIO'), |
| 203 builder: buildPortfolioStocklist | 215 builder: buildPortfolioStocklist |
| 204 ) | 216 ) |
| 205 ]; | 217 ]; |
| 206 return new TabNavigator( | 218 return new TabNavigator( |
| 207 views: views, | 219 views: views, |
| 208 selectedIndex: selectedTabIndex, | 220 selectedIndex: selectedTabIndex, |
| 209 onChanged: (tabIndex) { | 221 onChanged: (tabIndex) { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 body: buildTabNavigator(), | 285 body: buildTabNavigator(), |
| 274 snackBar: buildSnackBar(), | 286 snackBar: buildSnackBar(), |
| 275 floatingActionButton: buildFloatingActionButton(), | 287 floatingActionButton: buildFloatingActionButton(), |
| 276 drawer: _drawerShowing ? buildDrawer() : null | 288 drawer: _drawerShowing ? buildDrawer() : null |
| 277 ), | 289 ), |
| 278 ]; | 290 ]; |
| 279 addMenuToOverlays(overlays); | 291 addMenuToOverlays(overlays); |
| 280 return new Stack(overlays); | 292 return new Stack(overlays); |
| 281 } | 293 } |
| 282 } | 294 } |
| OLD | NEW |