| // Copyright 2016 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. |
| |
| import 'package:flutter/material.dart'; |
| |
| class GalleryDrawer extends StatelessWidget { |
| GalleryDrawer({ |
| Key key, |
| this.useLightTheme, |
| this.onThemeChanged, |
| this.timeDilation, |
| this.onTimeDilationChanged, |
| this.showPerformanceOverlay, |
| this.onShowPerformanceOverlayChanged |
| }) : super(key: key) { |
| assert(onThemeChanged != null); |
| assert(onTimeDilationChanged != null); |
| } |
| |
| final bool useLightTheme; |
| final ValueChanged<bool> onThemeChanged; |
| |
| final double timeDilation; |
| final ValueChanged<double> onTimeDilationChanged; |
| |
| final bool showPerformanceOverlay; |
| final ValueChanged<bool> onShowPerformanceOverlayChanged; |
| |
| @override |
| Widget build(BuildContext context) { |
| return new Drawer( |
| child: new Block( |
| children: <Widget>[ |
| new DrawerHeader(child: new Text('Flutter Gallery')), |
| new DrawerItem( |
| icon: Icons.brightness_5, |
| onPressed: () { onThemeChanged(true); }, |
| selected: useLightTheme, |
| child: new Row( |
| children: <Widget>[ |
| new Flexible(child: new Text('Light')), |
| new Radio<bool>( |
| value: true, |
| groupValue: useLightTheme, |
| onChanged: onThemeChanged |
| ) |
| ] |
| ) |
| ), |
| new DrawerItem( |
| icon: Icons.brightness_7, |
| onPressed: () { onThemeChanged(false); }, |
| selected: useLightTheme, |
| child: new Row( |
| children: <Widget>[ |
| new Flexible(child: new Text('Dark')), |
| new Radio<bool>( |
| value: false, |
| groupValue: useLightTheme, |
| onChanged: onThemeChanged |
| ) |
| ] |
| ) |
| ), |
| new Divider(), |
| new DrawerItem( |
| icon: Icons.hourglass_empty, |
| selected: timeDilation != 1.0, |
| onPressed: () { onTimeDilationChanged(timeDilation != 1.0 ? 1.0 : 20.0); }, |
| child: new Row( |
| children: <Widget>[ |
| new Flexible(child: new Text('Animate Slowly')), |
| new Checkbox( |
| value: timeDilation != 1.0, |
| onChanged: (bool value) { onTimeDilationChanged(value ? 20.0 : 1.0); } |
| ) |
| ] |
| ) |
| ), |
| new DrawerItem( |
| icon: Icons.assessment, |
| onPressed: () { onShowPerformanceOverlayChanged(!showPerformanceOverlay); }, |
| selected: showPerformanceOverlay, |
| child: new Row( |
| children: <Widget>[ |
| new Flexible(child: new Text('Performance Overlay')), |
| new Checkbox( |
| value: showPerformanceOverlay, |
| onChanged: (bool value) { onShowPerformanceOverlayChanged(!showPerformanceOverlay); } |
| ) |
| ] |
| ) |
| ), |
| ] |
| ) |
| ); |
| } |
| } |