| Index: sky/examples/fn/widgets/checkbox.dart
|
| diff --git a/sky/examples/fn/widgets/checkbox.dart b/sky/examples/fn/widgets/checkbox.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ff4e2914827c33e03d228c0e038b6b1258b3d97d
|
| --- /dev/null
|
| +++ b/sky/examples/fn/widgets/checkbox.dart
|
| @@ -0,0 +1,79 @@
|
| +part of widgets;
|
| +
|
| +class Checkbox extends ButtonBase {
|
| +
|
| + bool checked;
|
| + ValueChanged onChanged;
|
| +
|
| + static Style _style = new Style('''
|
| + display: flex;
|
| + justify-content: center;
|
| + align-items: center;
|
| + -webkit-user-select: none;
|
| + cursor: pointer;
|
| + width: 30px;
|
| + height: 30px;'''
|
| + );
|
| +
|
| + static Style _containerStyle = new Style('''
|
| + border: solid 2px;
|
| + border-color: rgba(90, 90, 90, 0.25);
|
| + width: 10px;
|
| + height: 10px;'''
|
| + );
|
| +
|
| + static Style _containerHighlightStyle = new Style('''
|
| + border: solid 2px;
|
| + border-color: rgba(90, 90, 90, 0.25);
|
| + width: 10px;
|
| + height: 10px;
|
| + border-radius: 10px;
|
| + background-color: orange;
|
| + border-color: orange;'''
|
| + );
|
| +
|
| + static Style _uncheckedStyle = new Style('''
|
| + top: 0px;
|
| + left: 0px;'''
|
| + );
|
| +
|
| + static Style _checkedStyle = new Style('''
|
| + top: 0px;
|
| + left: 0px;
|
| + transform: translate(2px, -15px) rotate(45deg);
|
| + width: 10px;
|
| + height: 20px;
|
| + border-style: solid;
|
| + border-top: none;
|
| + border-left: none;
|
| + border-right-width: 2px;
|
| + border-bottom-width: 2px;
|
| + border-color: #0f9d58;'''
|
| + );
|
| +
|
| + Checkbox({ Object key, this.onChanged, this.checked }) : super(key: key);
|
| +
|
| + Node render() {
|
| + return new Container(
|
| + style: _style,
|
| + onClick: _handleClick,
|
| + onPointerDown: _handlePointerDown,
|
| + onPointerUp: _handlePointerUp,
|
| + onPointerCancel: _handlePointerCancel,
|
| + children: [
|
| + new Container(
|
| + style: _highlight ? _containerHighlightStyle : _containerStyle,
|
| + children: [
|
| + new Container(
|
| + style: checked ? _checkedStyle : _uncheckedStyle
|
| + )
|
| + ]
|
| + )
|
| + ]
|
| + );
|
| + }
|
| +
|
| + void _handleClick(sky.Event e) {
|
| + onChanged(!checked);
|
| + }
|
| +}
|
|
|