| Index: sky/examples/fn/widgets/radio.dart
|
| diff --git a/sky/examples/fn/widgets/radio.dart b/sky/examples/fn/widgets/radio.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bdcc5b1c1364b1e01458d941110114c0f468eaf2
|
| --- /dev/null
|
| +++ b/sky/examples/fn/widgets/radio.dart
|
| @@ -0,0 +1,61 @@
|
| +part of widgets;
|
| +
|
| +class Radio extends ButtonBase {
|
| +
|
| + Object value;
|
| + Object groupValue;
|
| + ValueChanged onChanged;
|
| +
|
| + static Style _style = new Style('''
|
| + display: inline-block;
|
| + -webkit-user-select: none;
|
| + width: 14px;
|
| + height: 14px;
|
| + border-radius: 7px;
|
| + border: 1px solid blue;
|
| + margin: 0 5px;'''
|
| + );
|
| +
|
| + static Style _highlightStyle = new Style('''
|
| + display: inline-block;
|
| + -webkit-user-select: none;
|
| + width: 14px;
|
| + height: 14px;
|
| + border-radius: 7px;
|
| + border: 1px solid blue;
|
| + margin: 0 5px;
|
| + background-color: orange;'''
|
| + );
|
| +
|
| + static Style _dotStyle = new Style('''
|
| + -webkit-user-select: none;
|
| + width: 10px;
|
| + height: 10px;
|
| + border-radius: 5px;
|
| + background-color: black;
|
| + margin: 2px;'''
|
| + );
|
| +
|
| + Radio({
|
| + Object key,
|
| + this.onChanged,
|
| + this.value,
|
| + this.groupValue
|
| + }) : super(key: key);
|
| +
|
| + Node render() {
|
| + return new Container(
|
| + style: _highlight ? _highlightStyle : _style,
|
| + onClick: _handleClick,
|
| + onPointerDown: _handlePointerDown,
|
| + onPointerUp: _handlePointerUp,
|
| + onPointerCancel: _handlePointerCancel,
|
| + children: value == groupValue ?
|
| + [new Container( style : _dotStyle )] : null
|
| + );
|
| + }
|
| +
|
| + void _handleClick(sky.Event e) {
|
| + onChanged(value);
|
| + }
|
| +}
|
|
|