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

Unified Diff: sky/examples/stocks-fn/lib/stock_app.dart

Issue 1007893005: Clean up stock_app.dart (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 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/framework/components/action_bar.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/examples/stocks-fn/lib/stock_app.dart
diff --git a/sky/examples/stocks-fn/lib/stock_app.dart b/sky/examples/stocks-fn/lib/stock_app.dart
index 6c6888c98502c18ccca9ea6dabdd6a2aa478a8fb..1e59d3fdcf45cd82d442dc977b2fc83d89bd5f40 100644
--- a/sky/examples/stocks-fn/lib/stock_app.dart
+++ b/sky/examples/stocks-fn/lib/stock_app.dart
@@ -7,6 +7,7 @@ import 'package:sky/framework/components/drawer.dart';
import 'package:sky/framework/components/drawer_header.dart';
import 'package:sky/framework/components/floating_action_button.dart';
import 'package:sky/framework/components/icon.dart';
+import 'package:sky/framework/components/icon_button.dart';
import 'package:sky/framework/components/input.dart';
import 'package:sky/framework/components/menu_divider.dart';
import 'package:sky/framework/components/menu_item.dart';
@@ -15,24 +16,23 @@ import 'package:sky/framework/components/scaffold.dart';
import 'package:sky/framework/debug/tracing.dart';
import 'package:sky/framework/fn.dart';
import 'package:sky/framework/theme/typography.dart' as typography;
+import 'package:sky/framework/theme/colors.dart';
import 'stock_data.dart';
import 'stock_list.dart';
import 'stock_menu.dart';
class StocksApp extends App {
-
DrawerController _drawerController = new DrawerController();
PopupMenuController _menuController;
- static Style _iconStyle = new Style('''
- padding: 8px;'''
- );
+ static final Style _actionBarStyle = new Style('''
+ background-color: ${Purple[500]};''');
+
+ static final Style _searchBarStyle = new Style('''
+ background-color: ${Grey[50]};''');
- static Style _titleStyle = new Style('''
- padding-left: 24px;
- flex: 1;
- ${typography.white.title};'''
- );
+ static final Style _titleStyle = new Style('''
+ ${typography.white.title};''');
StockDataFetcher _stockDataFetcher;
List<Stock> _stocks = [];
@@ -48,16 +48,16 @@ class StocksApp extends App {
});
}
- void _handleSearchClick(_) {
+ void _handleSearchBegin(_) {
setState(() {
- _isSearching = !_isSearching;
+ _isSearching = true;
});
}
- void _handleMenuClick(_) {
+ void _handleSearchEnd(_) {
setState(() {
- _menuController = new PopupMenuController();
- _menuController.open();
+ _isSearching = false;
+ _searchQuery = null;
});
}
@@ -67,74 +67,75 @@ class StocksApp extends App {
});
}
- Node build() {
- var drawer = new Drawer(
+ void _handleMenuClick(_) {
+ setState(() {
+ _menuController = new PopupMenuController();
+ _menuController.open();
+ });
+ }
+
+ Drawer buildDrawer() {
+ return new Drawer(
controller: _drawerController,
level: 3,
children: [
- new DrawerHeader(
- children: [new Text('Stocks')]
- ),
+ new DrawerHeader(children: [new Text('Stocks')]),
new MenuItem(
key: 'Inbox',
icon: 'content/inbox',
- children: [new Text('Inbox')]
- ),
- new MenuDivider(
- ),
+ children: [new Text('Inbox')]),
+ new MenuDivider(),
new MenuItem(
key: 'Drafts',
icon: 'content/drafts',
- children: [new Text('Drafts')]
- ),
+ children: [new Text('Drafts')]),
new MenuItem(
key: 'Settings',
icon: 'action/settings',
- children: [new Text('Settings')]
- ),
+ children: [new Text('Settings')]),
new MenuItem(
key: 'Help & Feedback',
icon: 'action/help',
- children: [new Text('Help & Feedback')]
- )
+ children: [new Text('Help & Feedback')])
]
);
+ }
- Node title;
- if (_isSearching) {
- title = new Input(focused: true, placeholder: 'Search stocks',
- onChanged: _handleSearchQueryChanged);
- } else {
- title = new Text('Stocks');
- }
-
- var actionBar = new ActionBar(
- children: [
- new EventTarget(
- new Icon(key: 'menu', style: _iconStyle,
- size: 24,
- type: 'navigation/menu_white'),
- onGestureTap: _drawerController.toggle
- ),
- new Container(
+ Node buildActionBar() {
+ return new StyleNode(
+ new ActionBar(
+ left: new IconButton(
+ icon: 'navigation/menu_white',
+ onGestureTap: _drawerController.toggle),
+ center: new Container(
style: _titleStyle,
- children: [title]
- ),
- new EventTarget(
- new Icon(key: 'search', style: _iconStyle,
- size: 24,
- type: 'action/search_white'),
- onGestureTap: _handleSearchClick
- ),
- new EventTarget(
- new Icon(key: 'more_white', style: _iconStyle,
- size: 24,
- type: 'navigation/more_vert_white'),
- onGestureTap: _handleMenuClick
- )
- ]
- );
+ children: [new Text('Stocks')]),
+ right: [
+ new IconButton(
+ icon: 'action/search_white',
+ onGestureTap: _handleSearchBegin),
+ new IconButton(
+ icon: 'navigation/more_vert_white',
+ onGestureTap: _handleMenuClick)
+ ]),
+ _actionBarStyle);
+ }
+ // TODO(abarth): Should we factor this into a SearchBar in the framework?
+ Node buildSearchBar() {
+ return new StyleNode(
+ new ActionBar(
+ left: new IconButton(
+ icon: 'navigation/arrow_back_grey600',
+ onGestureTap: _handleSearchEnd),
+ center: new Input(
+ focused: true,
+ placeholder: 'Search stocks',
+ onChanged: _handleSearchQueryChanged)),
+ _searchBarStyle);
+ }
+
+ Node build() {
List<Node> overlays = [];
if (_menuController != null) {
@@ -152,11 +153,11 @@ class StocksApp extends App {
}
return new Scaffold(
- actionBar: actionBar,
+ header: _isSearching ? buildSearchBar() : buildActionBar(),
content: new Stocklist(stocks: _stocks, query: _searchQuery),
fab: new FloatingActionButton(
content: new Icon(type: 'content/add_white', size: 24), level: 3),
- drawer: drawer,
+ drawer: buildDrawer(),
overlays: overlays
);
}
« no previous file with comments | « no previous file | sky/framework/components/action_bar.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698