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

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: fix settings page of fitness app 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
« no previous file with comments | « no previous file | sky/sdk/example/fitness/lib/main.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_divider.dart'; 8 import 'package:sky/widgets/drawer_divider.dart';
9 import 'package:sky/widgets/drawer_header.dart'; 9 import 'package:sky/widgets/drawer_header.dart';
10 import 'package:sky/widgets/drawer_item.dart'; 10 import 'package:sky/widgets/drawer_item.dart';
(...skipping 16 matching lines...) Expand all
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() { 34 void initState() {
35 // if (debug) 35 // if (debug)
36 // new Timer(new Duration(seconds: 1), dumpState); 36 // new Timer(new Duration(seconds: 1), dumpState);
37 _drawerController = new DrawerController(_handleDrawerStatusChanged);
38 super.initState(); 37 super.initState();
39 } 38 }
40 39
41 void syncFields(HomeFragment source) { 40 void syncFields(HomeFragment source) {
42 navigator = source.navigator; 41 navigator = source.navigator;
43 userData = source.userData; 42 userData = source.userData;
44 } 43 }
45 44
46 bool _isShowingSnackBar = false; 45 bool _isShowingSnackBar = false;
47 bool _isRunning = false; 46 bool _isRunning = false;
48 47
49 DrawerController _drawerController;
50 bool _drawerShowing = false;
51
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) { 48 void _handleFitnessModeChange(FitnessMode value) {
62 setState(() { 49 setState(() {
63 _fitnessMode = value; 50 _fitnessMode = value;
64 }); 51 });
65 assert(navigator.currentRoute.name == '/drawer');
66 navigator.pop();
67 } 52 }
68 53
69 Drawer buildDrawer() { 54 Drawer buildDrawer() {
55 if (_drawerStatus == DrawerStatus.inactive)
56 return null;
70 return new Drawer( 57 return new Drawer(
71 controller: _drawerController, 58 showing: _drawerShowing,
72 level: 3, 59 level: 3,
60 onStatusChanged: _handleDrawerStatusChange,
61 navigator: navigator,
73 children: [ 62 children: [
74 new DrawerHeader(children: [new Text('Fitness')]), 63 new DrawerHeader(children: [new Text('Fitness')]),
75 new DrawerItem( 64 new DrawerItem(
76 icon: 'action/assessment', 65 icon: 'action/assessment',
77 onPressed: () => _handleFitnessModeChange(FitnessMode.measure), 66 onPressed: () => _handleFitnessModeChange(FitnessMode.measure),
78 selected: _fitnessMode == FitnessMode.measure, 67 selected: _fitnessMode == FitnessMode.measure,
79 children: [new Text('Measure')]), 68 children: [new Text('Measure')]),
80 new DrawerItem( 69 new DrawerItem(
81 icon: 'maps/directions_run', 70 icon: 'maps/directions_run',
82 onPressed: () => _handleFitnessModeChange(FitnessMode.run), 71 onPressed: () => _handleFitnessModeChange(FitnessMode.run),
83 selected: _fitnessMode == FitnessMode.run, 72 selected: _fitnessMode == FitnessMode.run,
84 children: [new Text('Run')]), 73 children: [new Text('Run')]),
85 new DrawerDivider(), 74 new DrawerDivider(),
86 new DrawerItem( 75 new DrawerItem(
87 icon: 'action/settings', 76 icon: 'action/settings',
88 onPressed: _handleShowSettings, 77 onPressed: _handleShowSettings,
89 children: [new Text('Settings')]), 78 children: [new Text('Settings')]),
90 new DrawerItem( 79 new DrawerItem(
91 icon: 'action/help', 80 icon: 'action/help',
92 children: [new Text('Help & Feedback')]) 81 children: [new Text('Help & Feedback')])
93 ] 82 ]
94 ); 83 );
95 } 84 }
96 85
97 void _handleShowSettings() { 86 bool _drawerShowing = false;
98 assert(navigator.currentRoute.name == '/drawer'); 87 DrawerStatus _drawerStatus = DrawerStatus.inactive;
99 navigator.pop(); 88
100 assert(navigator.currentRoute.name == '/'); 89 void _handleOpenDrawer() {
101 navigator.pushNamed('/settings'); 90 setState(() {
91 _drawerShowing = true;
92 _drawerStatus = DrawerStatus.active;
93 });
102 } 94 }
103 95
104 void _handleOpenDrawer() { 96 void _handleDrawerStatusChange(DrawerStatus status) {
105 _drawerController.open(); 97 if (status == DrawerStatus.inactive && navigator.currentRoute.name == "/draw er") {
106 navigator.pushState("/drawer", (_) { 98 navigator.pop();
107 _drawerController.close(); 99 }
100 setState(() {
101 _drawerStatus = status;
108 }); 102 });
109 } 103 }
110 104
105 void _handleShowSettings() {
106 navigator.pop();
107 navigator.pushNamed('/settings');
108 }
109
111 // TODO(jackson): We should be localizing 110 // TODO(jackson): We should be localizing
112 String get fitnessModeTitle { 111 String get fitnessModeTitle {
113 switch(_fitnessMode) { 112 switch(_fitnessMode) {
114 case FitnessMode.measure: return "Measure"; 113 case FitnessMode.measure: return "Measure";
115 case FitnessMode.run: return "Run"; 114 case FitnessMode.run: return "Run";
116 } 115 }
117 } 116 }
118 117
119 Widget buildToolBar() { 118 Widget buildToolBar() {
120 return new ToolBar( 119 return new ToolBar(
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 ); 195 );
197 } 196 }
198 } 197 }
199 198
200 Widget build() { 199 Widget build() {
201 return new Scaffold( 200 return new Scaffold(
202 toolbar: buildToolBar(), 201 toolbar: buildToolBar(),
203 body: buildBody(), 202 body: buildBody(),
204 snackBar: buildSnackBar(), 203 snackBar: buildSnackBar(),
205 floatingActionButton: buildFloatingActionButton(), 204 floatingActionButton: buildFloatingActionButton(),
206 drawer: _drawerShowing ? buildDrawer() : null 205 drawer: buildDrawer()
207 ); 206 );
208 } 207 }
209 } 208 }
OLDNEW
« no previous file with comments | « no previous file | sky/sdk/example/fitness/lib/main.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698