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; |