| Index: sky/examples/stocks-fn/stockarrow.dart
|
| diff --git a/sky/examples/stocks-fn/stockarrow.dart b/sky/examples/stocks-fn/stockarrow.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8285e628010f7774e3a5a7b5f5b3ec618a669b36
|
| --- /dev/null
|
| +++ b/sky/examples/stocks-fn/stockarrow.dart
|
| @@ -0,0 +1,86 @@
|
| +part of stocksapp;
|
| +
|
| +class StockArrow extends Component {
|
| +
|
| + double percentChange;
|
| +
|
| + static Style _style = new Style('''
|
| + width: 40px;
|
| + height: 40px;
|
| + display: flex;
|
| + align-items: center;
|
| + justify-content: center;
|
| + border-radius: 40px;
|
| + margin-right: 16px;
|
| + border: 1px solid transparent;'''
|
| + );
|
| +
|
| + static Style _upStyle = new Style('''
|
| + width: 0;
|
| + height: 0;
|
| + border-left: 9px solid transparent;
|
| + border-right: 9px solid transparent;
|
| + margin-bottom: 3px;
|
| + border-bottom: 9px solid white;'''
|
| + );
|
| +
|
| + static Style _downStyle = new Style('''
|
| + width: 0;
|
| + height: 0;
|
| + border-left: 9px solid transparent;
|
| + border-right: 9px solid transparent;
|
| + margin-top: 3px;
|
| + border-top: 9px solid white'''
|
| + );
|
| +
|
| + StockArrow({ Object key, this.percentChange }) : super(key: key);
|
| +
|
| + final List<String> _kRedColors = [
|
| + '#E57373',
|
| + '#EF5350',
|
| + '#F44336',
|
| + '#E53935',
|
| + '#D32F2F',
|
| + '#C62828',
|
| + '#B71C1C',
|
| + ];
|
| +
|
| + final List<String> _kGreenColors = [
|
| + '#81C784',
|
| + '#66BB6A',
|
| + '#4CAF50',
|
| + '#43A047',
|
| + '#388E3C',
|
| + '#2E7D32',
|
| + '#1B5E20',
|
| + ];
|
| +
|
| + int _colorIndexForPercentChange(double percentChange) {
|
| + // Currently the max is 10%.
|
| + double maxPercent = 10.0;
|
| + return max(0, ((percentChange.abs() / maxPercent) * _kGreenColors.length).floor());
|
| + }
|
| +
|
| + String _colorForPercentChange(double percentChange) {
|
| + if (percentChange > 0)
|
| + return _kGreenColors[_colorIndexForPercentChange(percentChange)];
|
| + return _kRedColors[_colorIndexForPercentChange(percentChange)];
|
| + }
|
| +
|
| + Node render() {
|
| + String border = _colorForPercentChange(percentChange).toString();
|
| + bool up = percentChange > 0;
|
| + String type = up ? 'bottom' : 'top';
|
| +
|
| + return new Container(
|
| + inlineStyle: 'border-color: $border',
|
| + style: _style,
|
| + children: [
|
| + new Container(
|
| + inlineStyle: 'border-$type-color: $border',
|
| + style: up ? _upStyle : _downStyle
|
| + )
|
| + ]
|
| + );
|
| + }
|
| +}
|
|
|