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

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

Issue 1031093002: Menu in StocksApp should dismiss when tapping elsewhere (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/modal_overlay.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 8eacdc827fb1579d0499ab11104198b211075bf3..8b6ea059cb3cea7f1182fb13eb3c033fe81b410b 100644
--- a/sky/examples/stocks-fn/lib/stock_app.dart
+++ b/sky/examples/stocks-fn/lib/stock_app.dart
@@ -11,6 +11,7 @@ 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';
+import 'package:sky/framework/components/modal_overlay.dart';
import 'package:sky/framework/components/popup_menu.dart';
import 'package:sky/framework/components/scaffold.dart';
import 'package:sky/framework/debug/tracing.dart';
@@ -61,19 +62,29 @@ class StocksApp extends App {
});
}
- void _handleSearchQueryChanged(query) {
+ void _handleSearchQueryChanged(String query) {
setState(() {
_searchQuery = query;
});
}
- void _handleMenuClick(_) {
+ void _handleMenuShow(_) {
setState(() {
_menuController = new PopupMenuController();
_menuController.open();
});
}
+ void _handleMenuHide(_) {
+ setState(() {
+ _menuController.close().then((_) {
+ setState(() {
+ _menuController = null;
+ });
+ });
+ });
+ }
+
Drawer buildDrawer() {
return new Drawer(
controller: _drawerController,
@@ -116,7 +127,7 @@ class StocksApp extends App {
onGestureTap: _handleSearchBegin),
new IconButton(
icon: 'navigation/more_vert_white',
- onGestureTap: _handleMenuClick)
+ onGestureTap: _handleMenuShow)
]),
_actionBarStyle);
}
@@ -135,25 +146,17 @@ class StocksApp extends App {
_searchBarStyle);
}
+ void addMenuToOverlays(List<Node> overlays) {
+ if (_menuController == null)
+ return;
+ overlays.add(new ModalOverlay(
+ children: [new StockMenu(controller: _menuController)],
+ onDismiss: _handleMenuHide));
+ }
+
Node build() {
List<Node> overlays = [];
-
- if (_menuController != null) {
- overlays.add(new EventTarget(
- new StockMenu(controller: _menuController),
- onGestureTap: (_) {
- // TODO(abarth): We should close the menu when you tap away from the
- // menu rather than when you tap on the menu.
- setState(() {
- _menuController.close().then((_) {
- setState(() {
- _menuController = null;
- });
- });
- });
- }
- ));
- }
+ addMenuToOverlays(overlays);
return new Scaffold(
header: _isSearching ? buildSearchBar() : buildActionBar(),
« no previous file with comments | « no previous file | sky/framework/components/modal_overlay.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698