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

Side by Side Diff: sky/sdk/example/fitness/lib/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: Update settings behavior for fitness app as well 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 unified diff | Download patch
OLDNEW
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/painting/text_style.dart'; 5 import 'package:sky/painting/text_style.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 13 matching lines...) Expand all
24 24
25 class HomeFragment extends StatefulComponent { 25 class HomeFragment extends StatefulComponent {
26 26
27 HomeFragment(this.navigator, this.userData); 27 HomeFragment(this.navigator, this.userData);
28 28
29 Navigator navigator; 29 Navigator navigator;
30 List<Measurement> userData; 30 List<Measurement> userData;
31 31
32 FitnessMode _fitnessMode = FitnessMode.measure; 32 FitnessMode _fitnessMode = FitnessMode.measure;
33 33
34 void initState {
35 // if (debug)
36 // new Timer(new Duration(seconds: 1), dumpState);
37 _drawerController = new DrawerController(_handleDrawerStatusChanged);
38 super.initState();
39 }
40
41 void syncFields(HomeFragment source) { 34 void syncFields(HomeFragment source) {
42 navigator = source.navigator; 35 navigator = source.navigator;
43 userData = source.userData; 36 userData = source.userData;
44 } 37 }
45 38
46 bool _isShowingSnackBar = false; 39 bool _isShowingSnackBar = false;
47 bool _isRunning = false; 40 bool _isRunning = false;
48 41
49 DrawerController _drawerController;
50 bool _drawerShowing = false; 42 bool _drawerShowing = false;
51 43
52 void _handleDrawerStatusChanged(bool showing) {
53 if (!showing && navigator.currentRoute.name == "/drawer") {
54 navigator.pop();
55 }
56 setState(() {
57 _drawerShowing = showing;
58 });
59 }
60
61 void _handleFitnessModeChange(FitnessMode value) { 44 void _handleFitnessModeChange(FitnessMode value) {
62 setState(() { 45 setState(() {
63 _fitnessMode = value; 46 _fitnessMode = value;
64 }); 47 });
65 assert(navigator.currentRoute.name == '/drawer');
66 navigator.pop();
67 } 48 }
68 49
69 Drawer buildDrawer() { 50 Drawer buildDrawer() {
70 return new Drawer( 51 return new Drawer(
71 controller: _drawerController, 52 showing: _drawerShowing,
72 level: 3, 53 level: 3,
54 onStatusChange: _handleDrawerStatusChange,
55 navigator: navigator,
73 children: [ 56 children: [
74 new DrawerHeader(children: [new Text('Fitness')]), 57 new DrawerHeader(children: [new Text('Fitness')]),
75 new MenuItem( 58 new MenuItem(
76 icon: 'action/assessment', 59 icon: 'action/assessment',
77 onPressed: () => _handleFitnessModeChange(FitnessMode.measure), 60 onPressed: () => _handleFitnessModeChange(FitnessMode.measure),
78 selected: _fitnessMode == FitnessMode.measure, 61 selected: _fitnessMode == FitnessMode.measure,
79 children: [new Text('Measure')]), 62 children: [new Text('Measure')]),
80 new MenuItem( 63 new MenuItem(
81 icon: 'maps/directions_run', 64 icon: 'maps/directions_run',
82 onPressed: () => _handleFitnessModeChange(FitnessMode.run), 65 onPressed: () => _handleFitnessModeChange(FitnessMode.run),
83 selected: _fitnessMode == FitnessMode.run, 66 selected: _fitnessMode == FitnessMode.run,
84 children: [new Text('Run')]), 67 children: [new Text('Run')]),
85 new MenuDivider(), 68 new MenuDivider(),
86 new MenuItem( 69 new MenuItem(
87 icon: 'action/settings', 70 icon: 'action/settings',
88 onPressed: _handleShowSettings, 71 onPressed: _handleShowSettings,
89 children: [new Text('Settings')]), 72 children: [new Text('Settings')]),
90 new MenuItem( 73 new MenuItem(
91 icon: 'action/help', 74 icon: 'action/help',
92 children: [new Text('Help & Feedback')]) 75 children: [new Text('Help & Feedback')])
93 ] 76 ]
94 ); 77 );
95 } 78 }
96 79
80 void _handleDrawerStatusChange(bool showing) {
81 setState(() {
82 _drawerShowing = showing;
83 });
84 }
85
97 void _handleShowSettings() { 86 void _handleShowSettings() {
98 assert(navigator.currentRoute.name == '/drawer');
99 navigator.pop(); 87 navigator.pop();
100 assert(navigator.currentRoute.name == '/');
101 navigator.pushNamed('/settings'); 88 navigator.pushNamed('/settings');
102 } 89 }
103 90
104 void _handleOpenDrawer() { 91 void _handleOpenDrawer() {
105 _drawerController.open(); 92 setState(() {
106 navigator.pushState("/drawer", (_) { 93 _drawerShowing = true;
107 _drawerController.close();
108 }); 94 });
109 } 95 }
110 96
111 // TODO(jackson): We should be localizing 97 // TODO(jackson): We should be localizing
112 String get fitnessModeTitle { 98 String get fitnessModeTitle {
113 switch(_fitnessMode) { 99 switch(_fitnessMode) {
114 case FitnessMode.measure: return "Measure"; 100 case FitnessMode.measure: return "Measure";
115 case FitnessMode.run: return "Run"; 101 case FitnessMode.run: return "Run";
116 } 102 }
117 } 103 }
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 ); 182 );
197 } 183 }
198 } 184 }
199 185
200 Widget build() { 186 Widget build() {
201 return new Scaffold( 187 return new Scaffold(
202 toolbar: buildToolBar(), 188 toolbar: buildToolBar(),
203 body: buildBody(), 189 body: buildBody(),
204 snackBar: buildSnackBar(), 190 snackBar: buildSnackBar(),
205 floatingActionButton: buildFloatingActionButton(), 191 floatingActionButton: buildFloatingActionButton(),
206 drawer: _drawerShowing ? buildDrawer() : null 192 drawer: buildDrawer()
207 ); 193 );
208 } 194 }
209 } 195 }
OLDNEW
« no previous file with comments | « no previous file | sky/sdk/example/fitness/lib/main.dart » ('j') | sky/sdk/example/stocks/lib/stock_home.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698