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

Unified Diff: sky/examples/stocks2/lib/stock_settings.dart

Issue 1197333002: Make the checkbox in settings control the radio buttons in the drawer, to demonstrate how to link s… (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/examples/stocks2/lib/stock_home.dart ('k') | sky/examples/stocks2/lib/stock_types.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/examples/stocks2/lib/stock_settings.dart
diff --git a/sky/examples/stocks2/lib/stock_settings.dart b/sky/examples/stocks2/lib/stock_settings.dart
index dedcd868463b470f71f6234c4a68b94cd1c79067..4d3977aa4daa793befe10fed62959f380899c9d0 100644
--- a/sky/examples/stocks2/lib/stock_settings.dart
+++ b/sky/examples/stocks2/lib/stock_settings.dart
@@ -12,24 +12,43 @@ import 'package:sky/widgets/scaffold.dart';
import 'package:sky/widgets/theme.dart';
import 'package:sky/widgets/tool_bar.dart';
+import 'stock_types.dart';
+
+typedef void SettingsUpdater({StockMode mode});
+
class StockSettings extends Component {
- StockSettings(this._navigator);
+ StockSettings(this.navigator, this.stockMode, this.updater) : super(stateful: true);
+
+ Navigator navigator;
+ StockMode stockMode;
+ SettingsUpdater updater;
- Navigator _navigator;
+ void syncFields(StockSettings source) {
+ navigator = source.navigator;
+ stockMode = source.stockMode;
+ updater = source.updater;
+ }
- bool _awesome = false;
- void _handleAwesomeChanged(bool value) {
+ void _handleStockModeChanged(bool value) {
setState(() {
- _awesome = value;
+ stockMode = value ? StockMode.optimistic : StockMode.pessimistic;
});
+ sendUpdates();
+ }
+
+ void sendUpdates() {
+ if (updater != null)
+ updater(
+ mode: stockMode
+ );
}
Widget buildToolBar() {
return new ToolBar(
left: new IconButton(
icon: 'navigation/arrow_back_white',
- onPressed: _navigator.pop),
+ onPressed: navigator.pop),
center: new Text('Settings', style: Theme.of(this).text.title)
);
}
@@ -41,10 +60,10 @@ class StockSettings extends Component {
child: new Block([
new MenuItem(
icon: 'action/thumb_up',
- onPressed: () => _handleAwesomeChanged(!_awesome),
+ onPressed: () => _handleStockModeChanged(stockMode == StockMode.optimistic ? false : true),
children: [
new Flexible(child: new Text('Everything is awesome')),
- new Checkbox(value: _awesome, onChanged: _handleAwesomeChanged)
+ new Checkbox(value: stockMode == StockMode.optimistic, onChanged: _handleStockModeChanged)
]
),
])
« no previous file with comments | « sky/examples/stocks2/lib/stock_home.dart ('k') | sky/examples/stocks2/lib/stock_types.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698