Commit 83ef964a authored by Viktor Lidholt's avatar Viktor Lidholt

Updates selection controls gallery demo (#3225)

parent 34f23cc4
...@@ -4,74 +4,244 @@ ...@@ -4,74 +4,244 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../gallery/demo.dart';
const String _checkboxText =
"# Checkboxes\n"
"Checkboxes allow the user to select multiple options from a set.";
const String _checkboxCode =
"""// Member variable holding the checkbox's value.
bool checkboxValue = false;
// Create a checkbox.
new Checkbox(
value: checkboxValue,
onChanged: (bool value) {
setState(() {
checkboxValue = value;
}
);
})
// Create a disabled checkbox.
// Checkboxes are disabled when onChanged isn't
// specified or null.
new Checkbox(value: false)""";
const String _radioText =
"# Radio buttons\n"
"Radio buttons allow the user to select one option from a set. Use radio "
"buttons for exclusive selection if you think that the user needs to see "
"all available options side-by-side.";
const String _radioCode =
"""// Member variable holding value.
int radioValue = 0;
// Method setting value.
void handleRadioValueChanged(int value) {
setState(() {
radioValue = value;
});
}
// Creates a set of radio buttons.
new Row(
children: <Widget>[
new Radio<int>(
value: 0,
groupValue: radioValue,
onChanged: handleRadioValueChanged
),
new Radio<int>(
value: 1,
groupValue: radioValue,
onChanged: handleRadioValueChanged
),
new Radio<int>(
value: 2,
groupValue: radioValue,
onChanged: handleRadioValueChanged
)
]
);
// Creates a disabled radio button.
new Radio<int>(
value: 0,
groupValue: 0
);""";
const String _switchText =
"# Switches\n"
"On/off switches toggle the state of a single settings option. The option "
"that the switch controls, as well as the state it’s in, should be made "
"clear from the corresponding inline label.";
const String _switchCode =
"""// Member variable holding value.
bool switchValue = false;
// Create a switch.
new Switch(
value: switchValue,
onChanged: (bool value) {
setState(() {
switchValue = value;
}
);
})
// Create a disabled switch.
// Switches are disabled when onChanged isn't
// specified or null.
new Switch(value: false)""";
class SelectionControlsDemo extends StatefulWidget { class SelectionControlsDemo extends StatefulWidget {
@override @override
_SelectionControlsDemoState createState() => new _SelectionControlsDemoState(); _SelectionControlsDemoState createState() => new _SelectionControlsDemoState();
} }
class _SelectionControlsDemoState extends State<SelectionControlsDemo> { class _SelectionControlsDemoState extends State<SelectionControlsDemo> {
bool _checkboxValue = false; @override
int _radioValue = 0; Widget build(BuildContext context) {
bool _switchValue = false; List<ComponentDemoTabData> demos = <ComponentDemoTabData>[
new ComponentDemoTabData(
tabName: "CHECKBOX",
description: _checkboxText,
widget: buildCheckbox(),
exampleCode: _checkboxCode
),
new ComponentDemoTabData(
tabName: "RADIO",
description: _radioText,
widget: buildRadio(),
exampleCode: _radioCode
),
new ComponentDemoTabData(
tabName: "SWITCH",
description: _switchText,
widget: buildSwitch(),
exampleCode: _switchCode
)
];
void _setCheckboxValue(bool value) { return new TabbedComponentDemoScaffold(
setState(() { title: 'Selection Controls',
_checkboxValue = value; demos: demos
}); );
} }
void _setRadioValue(int value) { bool checkboxValueA = true;
setState(() { bool checkboxValueB = false;
_radioValue = value; int radioValue = 0;
}); bool switchValue = false;
}
void _setSwitchValue(bool value) { void handleRadioValueChanged(int value) {
setState(() { setState(() {
_switchValue = value; radioValue = value;
}); });
} }
@override Widget buildCheckbox() {
Widget build(BuildContext context) { return new Align(
return new Scaffold( alignment: new FractionalOffset(0.5, 0.4),
appBar: new AppBar(title: new Text('Selection controls')), child: new Column(
body: new Column( mainAxisAlignment: MainAxisAlignment.collapse,
children: <Widget>[ children: <Widget>[
new Row( new Row(
mainAxisAlignment: MainAxisAlignment.collapse,
children: <Widget>[ children: <Widget>[
new Checkbox(value: _checkboxValue, onChanged: _setCheckboxValue), new Checkbox(value: checkboxValueA, onChanged: (bool value) {
new Checkbox(value: false), // Disabled setState(() {
new Checkbox(value: true), // Disabled checkboxValueA = value;
], });
mainAxisAlignment: MainAxisAlignment.spaceAround }),
new Checkbox(value: checkboxValueB, onChanged: (bool value) {
setState(() {
checkboxValueB = value;
});
})
]
), ),
new Row( new Row(
children: <int>[0, 1, 2].map((int i) { mainAxisAlignment: MainAxisAlignment.collapse,
return new Radio<int>( children: <Widget>[
value: i, // Disabled checkboxes
groupValue: _radioValue, new Checkbox(value: true),
onChanged: _setRadioValue new Checkbox(value: false)
); ]
}).toList(), )
mainAxisAlignment: MainAxisAlignment.spaceAround ]
), )
);
}
Widget buildRadio() {
return new Align(
alignment: new FractionalOffset(0.5, 0.4),
child: new Column(
mainAxisAlignment: MainAxisAlignment.collapse,
children: <Widget>[
new Row( new Row(
children: <int>[0, 1].map((int i) { mainAxisAlignment: MainAxisAlignment.collapse,
return new Radio<int>(value: i, groupValue: 0); // Disabled children: <Widget>[
}).toList(), new Radio<int>(
mainAxisAlignment: MainAxisAlignment.spaceAround value: 0,
groupValue: radioValue,
onChanged: handleRadioValueChanged
),
new Radio<int>(
value: 1,
groupValue: radioValue,
onChanged: handleRadioValueChanged
),
new Radio<int>(
value: 2,
groupValue: radioValue,
onChanged: handleRadioValueChanged
)
]
), ),
// Disabled radio buttons
new Row( new Row(
mainAxisAlignment: MainAxisAlignment.collapse,
children: <Widget>[ children: <Widget>[
new Switch(value: _switchValue, onChanged: _setSwitchValue), new Radio<int>(
new Switch(value: false), // Disabled value: 0,
new Switch(value: true), // Disabled groupValue: 0
], ),
mainAxisAlignment: MainAxisAlignment.spaceAround new Radio<int>(
), value: 1,
], groupValue: 0
mainAxisAlignment: MainAxisAlignment.spaceAround ),
new Radio<int>(
value: 2,
groupValue: 0
)
]
)
]
)
);
}
Widget buildSwitch() {
return new Align(
alignment: new FractionalOffset(0.5, 0.4),
child: new Row(
mainAxisAlignment: MainAxisAlignment.collapse,
children: <Widget>[
new Switch(value: switchValue, onChanged: (bool value) {
setState(() {
switchValue = value;
});
}),
// Disabled switches
new Switch(value: true),
new Switch(value: false)
]
) )
); );
} }
......
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