Chromium Code Reviews| Index: sky/sdk/lib/widgets/basic.dart |
| diff --git a/sky/sdk/lib/widgets/basic.dart b/sky/sdk/lib/widgets/basic.dart |
| index 038fec516c3f39cb998fb6221e66ed9396ac4d7b..41be7998f7dcf786dcf6ed36039c163da6e62fb5 100644 |
| --- a/sky/sdk/lib/widgets/basic.dart |
| +++ b/sky/sdk/lib/widgets/basic.dart |
| @@ -380,6 +380,29 @@ class Inline extends LeafRenderObjectWrapper { |
| } |
| +class StyledText extends Component { |
| + // elements ::= "string" | [<text-style> <elements>*] |
|
Hixie
2015/06/18 22:32:24
I think it'd be better to have this only support T
|
| + // Where "string" is text to display and text-style is an instance of |
| + // TextStyle. The text-style applies to all of the elements that follow. |
| + StyledText({ this.elements, String key }) : super(key: key); |
| + |
| + final dynamic elements; |
| + |
| + InlineBase _toInline(dynamic element) { |
| + if (element is String) { |
| + return new InlineText(element); |
| + } |
| + if (element is Iterable && element.first is TextStyle) { |
| + return new InlineStyle(element.first, element.skip(1).map(_toInline).toList()); |
| + } |
| + throw new ArgumentError("invalid elements"); |
| + } |
| + |
| + Widget build() { |
| + return new Inline(text: _toInline(elements)); |
| + } |
| +} |
| + |
| class Text extends Component { |
| Text(this.data, { String key, TextStyle this.style }) : super(key: key); |
| final String data; |