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

Side by Side Diff: sky/sdk/example/fitness/lib/settings.dart

Issue 1213603006: Initial fitness app (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: 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
(Empty)
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
3 // found in the LICENSE file.
4
5 import 'package:sky/widgets/basic.dart';
6 import 'package:sky/widgets/switch.dart';
7 import 'package:sky/widgets/icon_button.dart';
8 import 'package:sky/widgets/material.dart';
9 import 'package:sky/widgets/menu_item.dart';
10 import 'package:sky/widgets/navigator.dart';
11 import 'package:sky/widgets/scaffold.dart';
12 import 'package:sky/widgets/tool_bar.dart';
13 import 'package:sky/widgets/theme.dart';
14
15 import 'fitness_types.dart';
16
17 typedef void SettingsUpdater({
18 BackupMode backup
19 });
20
21 class SettingsFragment extends StatefulComponent {
abarth-chromium 2015/07/08 00:05:31 Can we try making this a stateless component?
22
23 SettingsFragment(this.navigator, this.backup, this.updater);
24
25 Navigator navigator;
26 BackupMode backup;
27 SettingsUpdater updater;
28
29 bool showModeDialog = false;
30
31 void syncFields(SettingsFragment source) {
32 navigator = source.navigator;
33 backup = source.backup;
34 updater = source.updater;
35 }
36
37 void _handleBackupChanged(bool value) {
38 setState(() {
39 backup = value ? BackupMode.enabled : BackupMode.disabled;
40 });
abarth-chromium 2015/07/08 00:05:31 Rather than calling setState, we should just updat
41 sendUpdates();
42 }
43
44 void sendUpdates() {
45 if (updater != null)
46 updater(
47 backup: backup
48 );
49 }
50
51 Widget buildToolBar() {
52 return new ToolBar(
53 left: new IconButton(
54 icon: 'navigation/arrow_back_white',
55 onPressed: navigator.pop),
56 center: new Text('Settings')
57 );
58 }
59
60 Widget buildSettingsPane() {
61 return new Material(
62 type: MaterialType.canvas,
63 child: new Container(
64 padding: const EdgeDims.symmetric(vertical: 20.0),
65 child: new Block([
66 new MenuItem(
67 onPressed: () { _handleBackupChanged(!(backup == BackupMode.enabled) ); },
68 children: [
69 new Flexible(child: new Text('Back up data to the cloud')),
70 new Switch(value: backup == BackupMode.enabled, onChanged: _handle BackupChanged)
71 ]
72 ),
73 new MenuItem(
74 children: [
75 new Block([
76 new Text('Height'),
77 new Text("6'2\"", style: Theme.of(this).text.caption),
78 ])
79 ]
80 ),
81 ])
82 )
83 );
84 }
85
86 Widget build() {
87 return new Scaffold(
88 toolbar: buildToolBar(),
89 body: buildSettingsPane()
90 );
91 }
92 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698