| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| part of fitness; |
| |
| typedef void SettingsUpdater({ |
| BackupMode backup |
| }); |
| |
| class SettingsFragment extends Component { |
| |
| SettingsFragment(this.navigator, this.backup, this.updater); |
| |
| final Navigator navigator; |
| final BackupMode backup; |
| final SettingsUpdater updater; |
| |
| void _handleBackupChanged(bool value) { |
| if (updater != null) |
| updater(backup: value ? BackupMode.enabled : BackupMode.disabled); |
| } |
| |
| Widget buildToolBar() { |
| return new ToolBar( |
| left: new IconButton( |
| icon: "navigation/arrow_back", |
| onPressed: navigator.pop), |
| center: new Text('Settings') |
| ); |
| } |
| |
| Widget buildSettingsPane() { |
| return new Material( |
| type: MaterialType.canvas, |
| child: new ScrollableViewport( |
| child: new Container( |
| padding: const EdgeDims.symmetric(vertical: 20.0), |
| child: new Block([ |
| new DrawerItem( |
| onPressed: () { _handleBackupChanged(!(backup == BackupMode.enabled)); }, |
| children: [ |
| new Flexible(child: new Text('Back up data to the cloud')), |
| new Switch(value: backup == BackupMode.enabled, onChanged: _handleBackupChanged) |
| ] |
| ) |
| ]) |
| ) |
| ) |
| ); |
| } |
| |
| Widget build() { |
| return new Scaffold( |
| toolbar: buildToolBar(), |
| body: buildSettingsPane() |
| ); |
| } |
| } |