Chromium Code Reviews| OLD | NEW |
|---|---|
| (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 } | |
| OLD | NEW |