Commit 8b6bd844 authored by Ian Hickson's avatar Ian Hickson

Merge pull request #1376 from Hixie/toggleable

Make the checkbox in the stocks popup menu work.
parents a3ecdc30 066768f0
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
part of stocks; part of stocks;
enum _MenuItems { add, remove, autorefresh } enum _MenuItems { autorefresh, autorefreshCheckbox, add, remove }
Future showStockMenu(NavigatorState navigator, { bool autorefresh, ValueChanged onAutorefreshChanged }) async { Future showStockMenu(NavigatorState navigator, { bool autorefresh, ValueChanged onAutorefreshChanged }) async {
switch (await showMenu( switch (await showMenu(
...@@ -15,30 +15,41 @@ Future showStockMenu(NavigatorState navigator, { bool autorefresh, ValueChanged ...@@ -15,30 +15,41 @@ Future showStockMenu(NavigatorState navigator, { bool autorefresh, ValueChanged
), ),
builder: (NavigatorState navigator) { builder: (NavigatorState navigator) {
return <PopupMenuItem>[ return <PopupMenuItem>[
new PopupMenuItem(
value: _MenuItems.add,
child: new Text('Add stock')
),
new PopupMenuItem(
value: _MenuItems.remove,
child: new Text('Remove stock')
),
new PopupMenuItem( new PopupMenuItem(
value: _MenuItems.autorefresh, value: _MenuItems.autorefresh,
child: new Row([ child: new Row([
new Flexible(child: new Text('Autorefresh')), new Flexible(child: new Text('Autorefresh')),
new Checkbox( new Checkbox(
value: autorefresh, value: autorefresh,
onChanged: onAutorefreshChanged onChanged: (bool value) {
navigator.setState(() {
autorefresh = value;
});
navigator.pop(_MenuItems.autorefreshCheckbox);
}
) )
] ]
) )
), ),
new PopupMenuItem(
value: _MenuItems.add,
child: new Text('Add stock')
),
new PopupMenuItem(
value: _MenuItems.remove,
child: new Text('Remove stock')
),
]; ];
} }
)) { )) {
case _MenuItems.autorefresh: case _MenuItems.autorefresh:
onAutorefreshChanged(!autorefresh); navigator.setState(() {
autorefresh = !autorefresh;
});
continue autorefreshNotify;
autorefreshNotify:
case _MenuItems.autorefreshCheckbox:
onAutorefreshChanged(autorefresh);
break; break;
case _MenuItems.add: case _MenuItems.add:
case _MenuItems.remove: case _MenuItems.remove:
......
...@@ -17,7 +17,6 @@ const sky.Color _kLightUncheckedColor = const sky.Color(0x8A000000); ...@@ -17,7 +17,6 @@ const sky.Color _kLightUncheckedColor = const sky.Color(0x8A000000);
const sky.Color _kDarkUncheckedColor = const sky.Color(0xB2FFFFFF); const sky.Color _kDarkUncheckedColor = const sky.Color(0xB2FFFFFF);
const double _kEdgeSize = 20.0; const double _kEdgeSize = 20.0;
const double _kEdgeRadius = 1.0; const double _kEdgeRadius = 1.0;
const Duration _kCheckDuration = const Duration(milliseconds: 200);
/// A material design checkbox /// A material design checkbox
/// ///
......
...@@ -23,7 +23,6 @@ const double _kTrackHeight = 14.0; ...@@ -23,7 +23,6 @@ const double _kTrackHeight = 14.0;
const double _kTrackRadius = _kTrackHeight / 2.0; const double _kTrackRadius = _kTrackHeight / 2.0;
const double _kTrackWidth = const double _kTrackWidth =
_kSwitchWidth - (_kThumbRadius - _kTrackRadius) * 2.0; _kSwitchWidth - (_kThumbRadius - _kTrackRadius) * 2.0;
const Duration _kCheckDuration = const Duration(milliseconds: 200);
const Size _kSwitchSize = const Size(_kSwitchWidth + 2.0, _kSwitchHeight + 2.0); const Size _kSwitchSize = const Size(_kSwitchWidth + 2.0, _kSwitchHeight + 2.0);
const double _kReactionRadius = _kSwitchWidth / 2.0; const double _kReactionRadius = _kSwitchWidth / 2.0;
......
...@@ -53,29 +53,30 @@ abstract class RenderToggleable extends RenderConstrainedBox { ...@@ -53,29 +53,30 @@ abstract class RenderToggleable extends RenderConstrainedBox {
} }
void _handleTap() { void _handleTap() {
_onChanged(!_value); if (_onChanged != null)
_onChanged(!_value);
} }
bool _value;
bool get value => _value; bool get value => _value;
bool _value;
void set value(bool value) { void set value(bool value) {
if (value == _value) return; if (value == _value)
return;
_value = value; _value = value;
performance.play(value ? Direction.forward : Direction.reverse); performance.play(value ? Direction.forward : Direction.reverse);
} }
ValueChanged _onChanged;
ValueChanged get onChanged => _onChanged; ValueChanged get onChanged => _onChanged;
ValueChanged _onChanged;
void set onChanged(ValueChanged onChanged) { void set onChanged(ValueChanged onChanged) {
_onChanged = onChanged; _onChanged = onChanged;
} }
AnimatedValue<double> get position => _position;
final AnimatedValue<double> _position = final AnimatedValue<double> _position =
new AnimatedValue<double>(0.0, end: 1.0, curve: easeIn, reverseCurve: easeOut); new AnimatedValue<double>(0.0, end: 1.0, curve: easeIn, reverseCurve: easeOut);
AnimatedValue<double> get position => _position;
AnimationPerformance _performance;
AnimationPerformance get performance => _performance; AnimationPerformance get performance => _performance;
AnimationPerformance _performance;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment