Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(147)

Side by Side Diff: sky/sdk/lib/widgets/basic.dart

Issue 1226113007: Add @override annotation to known overriden methods (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/sdk/lib/widgets/animated_component.dart ('k') | sky/sdk/lib/widgets/block_viewport.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:sky' as sky; 6 import 'dart:sky' as sky;
7 7
8 import 'package:vector_math/vector_math.dart'; 8 import 'package:vector_math/vector_math.dart';
9 9
10 import '../mojo/asset_bundle.dart'; 10 import '../mojo/asset_bundle.dart';
(...skipping 13 matching lines...) Expand all
24 export '../rendering/object.dart' show Point, Offset, Size, Rect, Color, Paint, Path; 24 export '../rendering/object.dart' show Point, Offset, Size, Rect, Color, Paint, Path;
25 export 'widget.dart' show Widget, Component, StatefulComponent, App, runApp, Lis tener, ParentDataNode; 25 export 'widget.dart' show Widget, Component, StatefulComponent, App, runApp, Lis tener, ParentDataNode;
26 26
27 27
28 // PAINTING NODES 28 // PAINTING NODES
29 29
30 class Opacity extends OneChildRenderObjectWrapper { 30 class Opacity extends OneChildRenderObjectWrapper {
31 Opacity({ String key, this.opacity, Widget child }) 31 Opacity({ String key, this.opacity, Widget child })
32 : super(key: key, child: child); 32 : super(key: key, child: child);
33 33
34 @override
34 RenderOpacity get root => super.root; 35 RenderOpacity get root => super.root;
35 final double opacity; 36 final double opacity;
36 37
38 @override
37 RenderOpacity createNode() => new RenderOpacity(opacity: opacity); 39 RenderOpacity createNode() => new RenderOpacity(opacity: opacity);
38 40
41 @override
39 void syncRenderObject(Opacity old) { 42 void syncRenderObject(Opacity old) {
40 super.syncRenderObject(old); 43 super.syncRenderObject(old);
41 root.opacity = opacity; 44 root.opacity = opacity;
42 } 45 }
43 } 46 }
44 47
45 class ColorFilter extends OneChildRenderObjectWrapper { 48 class ColorFilter extends OneChildRenderObjectWrapper {
46 ColorFilter({ String key, this.color, this.transferMode, Widget child }) 49 ColorFilter({ String key, this.color, this.transferMode, Widget child })
47 : super(key: key, child: child); 50 : super(key: key, child: child);
48 51
52 @override
49 RenderColorFilter get root => super.root; 53 RenderColorFilter get root => super.root;
50 final Color color; 54 final Color color;
51 final sky.TransferMode transferMode; 55 final sky.TransferMode transferMode;
52 56
57 @override
53 RenderColorFilter createNode() => new RenderColorFilter(color: color, transfer Mode: transferMode); 58 RenderColorFilter createNode() => new RenderColorFilter(color: color, transfer Mode: transferMode);
54 59
60 @override
55 void syncRenderObject(ColorFilter old) { 61 void syncRenderObject(ColorFilter old) {
56 super.syncRenderObject(old); 62 super.syncRenderObject(old);
57 root.color = color; 63 root.color = color;
58 root.transferMode = transferMode; 64 root.transferMode = transferMode;
59 } 65 }
60 } 66 }
61 67
62 class DecoratedBox extends OneChildRenderObjectWrapper { 68 class DecoratedBox extends OneChildRenderObjectWrapper {
63 69
64 DecoratedBox({ String key, this.decoration, Widget child }) 70 DecoratedBox({ String key, this.decoration, Widget child })
65 : super(key: key, child: child); 71 : super(key: key, child: child);
66 72
73 @override
67 RenderDecoratedBox get root => super.root; 74 RenderDecoratedBox get root => super.root;
68 final BoxDecoration decoration; 75 final BoxDecoration decoration;
69 76
77 @override
70 RenderDecoratedBox createNode() => new RenderDecoratedBox(decoration: decorati on); 78 RenderDecoratedBox createNode() => new RenderDecoratedBox(decoration: decorati on);
71 79
80 @override
72 void syncRenderObject(DecoratedBox old) { 81 void syncRenderObject(DecoratedBox old) {
73 super.syncRenderObject(old); 82 super.syncRenderObject(old);
74 root.decoration = decoration; 83 root.decoration = decoration;
75 } 84 }
76 85
77 } 86 }
78 87
79 class CustomPaint extends OneChildRenderObjectWrapper { 88 class CustomPaint extends OneChildRenderObjectWrapper {
80 89
81 CustomPaint({ String key, this.callback, this.token, Widget child }) 90 CustomPaint({ String key, this.callback, this.token, Widget child })
82 : super(key: key, child: child); 91 : super(key: key, child: child);
83 92
93 @override
84 RenderCustomPaint get root => super.root; 94 RenderCustomPaint get root => super.root;
85 final CustomPaintCallback callback; 95 final CustomPaintCallback callback;
86 final dynamic token; // set this to be repainted automatically when the token changes 96 final dynamic token; // set this to be repainted automatically when the token changes
87 97
98 @override
88 RenderCustomPaint createNode() => new RenderCustomPaint(callback: callback); 99 RenderCustomPaint createNode() => new RenderCustomPaint(callback: callback);
89 100
101 @override
90 void syncRenderObject(CustomPaint old) { 102 void syncRenderObject(CustomPaint old) {
91 super.syncRenderObject(old); 103 super.syncRenderObject(old);
92 if (old != null && old.token != token) 104 if (old != null && old.token != token)
93 root.markNeedsPaint(); 105 root.markNeedsPaint();
94 root.callback = callback; 106 root.callback = callback;
95 } 107 }
96 108
109 @override
97 void remove() { 110 void remove() {
98 root.callback = null; 111 root.callback = null;
99 super.remove(); 112 super.remove();
100 } 113 }
101 114
102 } 115 }
103 116
104 class ClipRect extends OneChildRenderObjectWrapper { 117 class ClipRect extends OneChildRenderObjectWrapper {
105 ClipRect({ String key, Widget child }) 118 ClipRect({ String key, Widget child })
106 : super(key: key, child: child); 119 : super(key: key, child: child);
107 120
121 @override
108 RenderClipRect get root => super.root; 122 RenderClipRect get root => super.root;
123
124 @override
109 RenderClipRect createNode() => new RenderClipRect(); 125 RenderClipRect createNode() => new RenderClipRect();
110 126
111 // Nothing to sync, so we don't implement syncRenderObject() 127 // Nothing to sync, so we don't implement syncRenderObject()
112 } 128 }
113 129
114 class ClipRRect extends OneChildRenderObjectWrapper { 130 class ClipRRect extends OneChildRenderObjectWrapper {
115 final double xRadius; 131 final double xRadius;
116 final double yRadius; 132 final double yRadius;
117 ClipRRect({ String key, Widget child, this.xRadius, this.yRadius }) 133 ClipRRect({ String key, Widget child, this.xRadius, this.yRadius })
118 : super(key: key, child: child); 134 : super(key: key, child: child);
119 135
136 @override
120 RenderClipRRect get root => super.root; 137 RenderClipRRect get root => super.root;
138
139 @override
121 RenderClipRRect createNode() => new RenderClipRRect(xRadius: xRadius, yRadius: yRadius); 140 RenderClipRRect createNode() => new RenderClipRRect(xRadius: xRadius, yRadius: yRadius);
122 141
123 void syncRenderObject(ClipRRect old) { 142 void syncRenderObject(ClipRRect old) {
124 super.syncRenderObject(old); 143 super.syncRenderObject(old);
125 root.xRadius = xRadius; 144 root.xRadius = xRadius;
126 root.yRadius = yRadius; 145 root.yRadius = yRadius;
127 } 146 }
128 } 147 }
129 148
130 class ClipOval extends OneChildRenderObjectWrapper { 149 class ClipOval extends OneChildRenderObjectWrapper {
131 ClipOval({ String key, Widget child }) 150 ClipOval({ String key, Widget child })
132 : super(key: key, child: child); 151 : super(key: key, child: child);
133 152
153 @override
134 RenderClipOval get root => super.root; 154 RenderClipOval get root => super.root;
155
156 @override
135 RenderClipOval createNode() => new RenderClipOval(); 157 RenderClipOval createNode() => new RenderClipOval();
136 158
137 // Nothing to sync, so we don't implement syncRenderObject() 159 // Nothing to sync, so we don't implement syncRenderObject()
138 } 160 }
139 161
140 // POSITIONING AND SIZING NODES 162 // POSITIONING AND SIZING NODES
141 163
142 class Transform extends OneChildRenderObjectWrapper { 164 class Transform extends OneChildRenderObjectWrapper {
143 165
144 Transform({ String key, this.transform, Widget child }) 166 Transform({ String key, this.transform, Widget child })
145 : super(key: key, child: child); 167 : super(key: key, child: child);
146 168
169 @override
147 RenderTransform get root => super.root; 170 RenderTransform get root => super.root;
148 final Matrix4 transform; 171 final Matrix4 transform;
149 172
173 @override
150 RenderTransform createNode() => new RenderTransform(transform: transform); 174 RenderTransform createNode() => new RenderTransform(transform: transform);
151 175
176 @override
152 void syncRenderObject(Transform old) { 177 void syncRenderObject(Transform old) {
153 super.syncRenderObject(old); 178 super.syncRenderObject(old);
154 root.transform = transform; 179 root.transform = transform;
155 } 180 }
156 181
157 } 182 }
158 183
159 class Padding extends OneChildRenderObjectWrapper { 184 class Padding extends OneChildRenderObjectWrapper {
160 185
161 Padding({ String key, this.padding, Widget child }) 186 Padding({ String key, this.padding, Widget child })
162 : super(key: key, child: child); 187 : super(key: key, child: child);
163 188
189 @override
164 RenderPadding get root => super.root; 190 RenderPadding get root => super.root;
165 final EdgeDims padding; 191 final EdgeDims padding;
166 192
193 @override
167 RenderPadding createNode() => new RenderPadding(padding: padding); 194 RenderPadding createNode() => new RenderPadding(padding: padding);
168 195
196 @override
169 void syncRenderObject(Padding old) { 197 void syncRenderObject(Padding old) {
170 super.syncRenderObject(old); 198 super.syncRenderObject(old);
171 root.padding = padding; 199 root.padding = padding;
172 } 200 }
173 201
174 } 202 }
175 203
176 class Center extends OneChildRenderObjectWrapper { 204 class Center extends OneChildRenderObjectWrapper {
177 Center({ String key, Widget child }) 205 Center({ String key, Widget child })
178 : super(key: key, child: child); 206 : super(key: key, child: child);
179 207
208 @override
180 RenderPositionedBox get root => super.root; 209 RenderPositionedBox get root => super.root;
210
211 @override
181 RenderPositionedBox createNode() => new RenderPositionedBox(); 212 RenderPositionedBox createNode() => new RenderPositionedBox();
182 213
183 // Nothing to sync, so we don't implement syncRenderObject() 214 // Nothing to sync, so we don't implement syncRenderObject()
184 } 215 }
185 216
186 class SizedBox extends OneChildRenderObjectWrapper { 217 class SizedBox extends OneChildRenderObjectWrapper {
187 218
188 SizedBox({ 219 SizedBox({
189 String key, 220 String key,
190 this.width, 221 this.width,
191 this.height, 222 this.height,
192 Widget child 223 Widget child
193 }) : super(key: key, child: child); 224 }) : super(key: key, child: child);
194 225
226 @override
195 RenderConstrainedBox get root => super.root; 227 RenderConstrainedBox get root => super.root;
196 228
197 final double width; 229 final double width;
198 final double height; 230 final double height;
199 231
232 @override
200 RenderConstrainedBox createNode() => new RenderConstrainedBox(additionalConstr aints: _additionalConstraints()); 233 RenderConstrainedBox createNode() => new RenderConstrainedBox(additionalConstr aints: _additionalConstraints());
201 234
202 BoxConstraints _additionalConstraints() { 235 BoxConstraints _additionalConstraints() {
203 var result = const BoxConstraints(); 236 var result = const BoxConstraints();
204 if (width != null) 237 if (width != null)
205 result = result.applyWidth(width); 238 result = result.applyWidth(width);
206 if (height != null) 239 if (height != null)
207 result = result.applyHeight(height); 240 result = result.applyHeight(height);
208 return result; 241 return result;
209 } 242 }
210 243
244 @override
211 void syncRenderObject(SizedBox old) { 245 void syncRenderObject(SizedBox old) {
212 super.syncRenderObject(old); 246 super.syncRenderObject(old);
213 root.additionalConstraints = _additionalConstraints(); 247 root.additionalConstraints = _additionalConstraints();
214 } 248 }
215 249
216 } 250 }
217 251
218 class ConstrainedBox extends OneChildRenderObjectWrapper { 252 class ConstrainedBox extends OneChildRenderObjectWrapper {
219 253
220 ConstrainedBox({ String key, this.constraints, Widget child }) 254 ConstrainedBox({ String key, this.constraints, Widget child })
221 : super(key: key, child: child); 255 : super(key: key, child: child);
222 256
257 @override
223 RenderConstrainedBox get root => super.root; 258 RenderConstrainedBox get root => super.root;
224 259
225 final BoxConstraints constraints; 260 final BoxConstraints constraints;
226 261
262 @override
227 RenderConstrainedBox createNode() => new RenderConstrainedBox(additionalConstr aints: constraints); 263 RenderConstrainedBox createNode() => new RenderConstrainedBox(additionalConstr aints: constraints);
228 264
265 @override
229 void syncRenderObject(ConstrainedBox old) { 266 void syncRenderObject(ConstrainedBox old) {
230 super.syncRenderObject(old); 267 super.syncRenderObject(old);
231 root.additionalConstraints = constraints; 268 root.additionalConstraints = constraints;
232 } 269 }
233 270
234 } 271 }
235 272
236 class ShrinkWrapWidth extends OneChildRenderObjectWrapper { 273 class ShrinkWrapWidth extends OneChildRenderObjectWrapper {
237 274
238 ShrinkWrapWidth({ 275 ShrinkWrapWidth({
239 String key, 276 String key,
240 this.stepWidth, 277 this.stepWidth,
241 this.stepHeight, 278 this.stepHeight,
242 Widget child 279 Widget child
243 }): super(key: key, child: child); 280 }): super(key: key, child: child);
244 281
282 @override
245 RenderShrinkWrapWidth get root => super.root; 283 RenderShrinkWrapWidth get root => super.root;
246 284
247 final double stepWidth; 285 final double stepWidth;
248 final double stepHeight; 286 final double stepHeight;
249 287
288 @override
250 RenderShrinkWrapWidth createNode() => new RenderShrinkWrapWidth(); 289 RenderShrinkWrapWidth createNode() => new RenderShrinkWrapWidth();
251 290
291 @override
252 void syncRenderObject(ShrinkWrapWidth old) { 292 void syncRenderObject(ShrinkWrapWidth old) {
253 super.syncRenderObject(old); 293 super.syncRenderObject(old);
254 root.stepWidth = stepWidth; 294 root.stepWidth = stepWidth;
255 root.stepHeight = stepHeight; 295 root.stepHeight = stepHeight;
256 } 296 }
257 297
258 } 298 }
259 299
260 class Baseline extends OneChildRenderObjectWrapper { 300 class Baseline extends OneChildRenderObjectWrapper {
261 301
262 Baseline({ 302 Baseline({
263 String key, 303 String key,
264 this.baseline, // in pixels 304 this.baseline, // in pixels
265 this.baselineType: TextBaseline.alphabetic, 305 this.baselineType: TextBaseline.alphabetic,
266 Widget child 306 Widget child
267 }): super(key: key, child: child); 307 }): super(key: key, child: child);
268 308
309 @override
269 RenderBaseline get root => super.root; 310 RenderBaseline get root => super.root;
270 311
271 final double baseline; 312 final double baseline;
272 final TextBaseline baselineType; 313 final TextBaseline baselineType;
273 314
315 @override
274 RenderBaseline createNode() => new RenderBaseline(baseline: baseline, baseline Type: baselineType); 316 RenderBaseline createNode() => new RenderBaseline(baseline: baseline, baseline Type: baselineType);
275 317
318 @override
276 void syncRenderObject(Baseline old) { 319 void syncRenderObject(Baseline old) {
277 super.syncRenderObject(old); 320 super.syncRenderObject(old);
278 root.baseline = baseline; 321 root.baseline = baseline;
279 root.baselineType = baselineType; 322 root.baselineType = baselineType;
280 } 323 }
281 324
282 } 325 }
283 326
284 class SizeObserver extends OneChildRenderObjectWrapper { 327 class SizeObserver extends OneChildRenderObjectWrapper {
285 328
286 SizeObserver({ String key, this.callback, Widget child }) 329 SizeObserver({ String key, this.callback, Widget child })
287 : super(key: key, child: child); 330 : super(key: key, child: child);
288 331
332 @override
289 RenderSizeObserver get root => super.root; 333 RenderSizeObserver get root => super.root;
290 final SizeChangedCallback callback; 334 final SizeChangedCallback callback;
291 335
336 @override
292 RenderSizeObserver createNode() => new RenderSizeObserver(callback: callback); 337 RenderSizeObserver createNode() => new RenderSizeObserver(callback: callback);
293 338
339 @override
294 void syncRenderObject(SizeObserver old) { 340 void syncRenderObject(SizeObserver old) {
295 super.syncRenderObject(old); 341 super.syncRenderObject(old);
296 root.callback = callback; 342 root.callback = callback;
297 } 343 }
298 344
345 @override
299 void remove() { 346 void remove() {
300 root.callback = null; 347 root.callback = null;
301 super.remove(); 348 super.remove();
302 } 349 }
303 350
304 } 351 }
305 352
306 353
307 // CONVENIENCE CLASS TO COMBINE COMMON PAINTING, POSITIONING, AND SIZING NODES 354 // CONVENIENCE CLASS TO COMBINE COMMON PAINTING, POSITIONING, AND SIZING NODES
308 355
(...skipping 13 matching lines...) Expand all
322 369
323 final Widget child; 370 final Widget child;
324 final BoxConstraints constraints; 371 final BoxConstraints constraints;
325 final BoxDecoration decoration; 372 final BoxDecoration decoration;
326 final EdgeDims margin; 373 final EdgeDims margin;
327 final EdgeDims padding; 374 final EdgeDims padding;
328 final Matrix4 transform; 375 final Matrix4 transform;
329 final double width; 376 final double width;
330 final double height; 377 final double height;
331 378
379 @override
332 Widget build() { 380 Widget build() {
333 Widget current = child; 381 Widget current = child;
334 382
335 if (child == null && width == null && height == null) 383 if (child == null && width == null && height == null)
336 current = new ConstrainedBox(constraints: BoxConstraints.expand); 384 current = new ConstrainedBox(constraints: BoxConstraints.expand);
337 385
338 if (padding != null) 386 if (padding != null)
339 current = new Padding(padding: padding, child: current); 387 current = new Padding(padding: padding, child: current);
340 388
341 if (decoration != null) 389 if (decoration != null)
(...skipping 20 matching lines...) Expand all
362 410
363 } 411 }
364 412
365 413
366 // LAYOUT NODES 414 // LAYOUT NODES
367 415
368 class Block extends MultiChildRenderObjectWrapper { 416 class Block extends MultiChildRenderObjectWrapper {
369 Block(List<Widget> children, { String key }) 417 Block(List<Widget> children, { String key })
370 : super(key: key, children: children); 418 : super(key: key, children: children);
371 419
420 @override
372 RenderBlock get root => super.root; 421 RenderBlock get root => super.root;
422
423 @override
373 RenderBlock createNode() => new RenderBlock(); 424 RenderBlock createNode() => new RenderBlock();
374 } 425 }
375 426
376 class Stack extends MultiChildRenderObjectWrapper { 427 class Stack extends MultiChildRenderObjectWrapper {
377 Stack(List<Widget> children, { String key }) 428 Stack(List<Widget> children, { String key })
378 : super(key: key, children: children); 429 : super(key: key, children: children);
379 430
431 @override
380 RenderStack get root => super.root; 432 RenderStack get root => super.root;
433
434 @override
381 RenderStack createNode() => new RenderStack(); 435 RenderStack createNode() => new RenderStack();
382 } 436 }
383 437
384 class Positioned extends ParentDataNode { 438 class Positioned extends ParentDataNode {
385 Positioned({ 439 Positioned({
386 String key, 440 String key,
387 Widget child, 441 Widget child,
388 double top, 442 double top,
389 double right, 443 double right,
390 double bottom, 444 double bottom,
391 double left 445 double left
392 }) : super(child, 446 }) : super(child,
393 new StackParentData()..top = top 447 new StackParentData()..top = top
394 ..right = right 448 ..right = right
395 ..bottom = bottom 449 ..bottom = bottom
396 ..left = left, 450 ..left = left,
397 key: key); 451 key: key);
398 } 452 }
399 453
400 class Flex extends MultiChildRenderObjectWrapper { 454 class Flex extends MultiChildRenderObjectWrapper {
401 455
402 Flex(List<Widget> children, { 456 Flex(List<Widget> children, {
403 String key, 457 String key,
404 this.direction: FlexDirection.horizontal, 458 this.direction: FlexDirection.horizontal,
405 this.justifyContent: FlexJustifyContent.flexStart, 459 this.justifyContent: FlexJustifyContent.flexStart,
406 this.alignItems: FlexAlignItems.center 460 this.alignItems: FlexAlignItems.center
407 }) : super(key: key, children: children); 461 }) : super(key: key, children: children);
408 462
463 @override
409 RenderFlex get root => super.root; 464 RenderFlex get root => super.root;
465
466 @override
410 RenderFlex createNode() => new RenderFlex(direction: this.direction); 467 RenderFlex createNode() => new RenderFlex(direction: this.direction);
411 468
412 final FlexDirection direction; 469 final FlexDirection direction;
413 final FlexJustifyContent justifyContent; 470 final FlexJustifyContent justifyContent;
414 final FlexAlignItems alignItems; 471 final FlexAlignItems alignItems;
415 472
473 @override
416 void syncRenderObject(Widget old) { 474 void syncRenderObject(Widget old) {
417 super.syncRenderObject(old); 475 super.syncRenderObject(old);
418 root.direction = direction; 476 root.direction = direction;
419 root.justifyContent = justifyContent; 477 root.justifyContent = justifyContent;
420 root.alignItems = alignItems; 478 root.alignItems = alignItems;
421 } 479 }
422 480
423 } 481 }
424 482
425 class Flexible extends ParentDataNode { 483 class Flexible extends ParentDataNode {
426 Flexible({ String key, Widget child, int flex: 1 }) 484 Flexible({ String key, Widget child, int flex: 1 })
427 : super(child, new FlexBoxParentData()..flex = flex, key: key); 485 : super(child, new FlexBoxParentData()..flex = flex, key: key);
428 } 486 }
429 487
430 class Inline extends LeafRenderObjectWrapper { 488 class Inline extends LeafRenderObjectWrapper {
431 Inline({ String key, this.text }) : super(key: key); 489 Inline({ String key, this.text }) : super(key: key);
432 490
491 @override
433 RenderParagraph get root => super.root; 492 RenderParagraph get root => super.root;
493
494 @override
434 RenderParagraph createNode() => new RenderParagraph(text); 495 RenderParagraph createNode() => new RenderParagraph(text);
435 496
436 final InlineBase text; 497 final InlineBase text;
437 498
499 @override
438 void syncRenderObject(Widget old) { 500 void syncRenderObject(Widget old) {
439 super.syncRenderObject(old); 501 super.syncRenderObject(old);
440 root.inline = text; 502 root.inline = text;
441 } 503 }
442 504
443 } 505 }
444 506
445 class StyledText extends Component { 507 class StyledText extends Component {
446 // elements ::= "string" | [<text-style> <elements>*] 508 // elements ::= "string" | [<text-style> <elements>*]
447 // Where "string" is text to display and text-style is an instance of 509 // Where "string" is text to display and text-style is an instance of
448 // TextStyle. The text-style applies to all of the elements that follow. 510 // TextStyle. The text-style applies to all of the elements that follow.
449 StyledText({ this.elements, String key }) : super(key: key); 511 StyledText({ this.elements, String key }) : super(key: key);
450 512
451 final dynamic elements; 513 final dynamic elements;
452 514
453 InlineBase _toInline(dynamic element) { 515 InlineBase _toInline(dynamic element) {
454 if (element is String) { 516 if (element is String) {
455 return new InlineText(element); 517 return new InlineText(element);
456 } 518 }
457 if (element is Iterable && element.first is TextStyle) { 519 if (element is Iterable && element.first is TextStyle) {
458 return new InlineStyle(element.first, element.skip(1).map(_toInline).toLis t()); 520 return new InlineStyle(element.first, element.skip(1).map(_toInline).toLis t());
459 } 521 }
460 throw new ArgumentError("invalid elements"); 522 throw new ArgumentError("invalid elements");
461 } 523 }
462 524
525 @override
463 Widget build() { 526 Widget build() {
464 return new Inline(text: _toInline(elements)); 527 return new Inline(text: _toInline(elements));
465 } 528 }
466 } 529 }
467 530
468 class Text extends Component { 531 class Text extends Component {
469 Text(this.data, { String key, TextStyle this.style }) : super(key: key); 532 Text(this.data, { String key, TextStyle this.style }) : super(key: key);
470 final String data; 533 final String data;
471 final TextStyle style; 534 final TextStyle style;
472 bool get interchangeable => true; 535 bool get interchangeable => true;
536
537 @override
473 Widget build() { 538 Widget build() {
474 InlineBase text = new InlineText(data); 539 InlineBase text = new InlineText(data);
475 TextStyle defaultStyle = DefaultTextStyle.of(this); 540 TextStyle defaultStyle = DefaultTextStyle.of(this);
476 TextStyle combinedStyle; 541 TextStyle combinedStyle;
477 if (defaultStyle != null) { 542 if (defaultStyle != null) {
478 if (style != null) 543 if (style != null)
479 combinedStyle = defaultStyle.merge(style); 544 combinedStyle = defaultStyle.merge(style);
480 else 545 else
481 combinedStyle = defaultStyle; 546 combinedStyle = defaultStyle;
482 } else { 547 } else {
483 combinedStyle = style; 548 combinedStyle = style;
484 } 549 }
485 if (combinedStyle != null) 550 if (combinedStyle != null)
486 text = new InlineStyle(combinedStyle, [text]); 551 text = new InlineStyle(combinedStyle, [text]);
487 return new Inline(text: text); 552 return new Inline(text: text);
488 } 553 }
489 } 554 }
490 555
491 class Image extends LeafRenderObjectWrapper { 556 class Image extends LeafRenderObjectWrapper {
492 Image({ sky.Image image, this.size }) 557 Image({ sky.Image image, this.size })
493 : image = image, super(key: image.hashCode.toString()); 558 : image = image, super(key: image.hashCode.toString());
494 559
560 @override
495 RenderImage get root => super.root; 561 RenderImage get root => super.root;
562
563 @override
496 RenderImage createNode() => new RenderImage(image, size); 564 RenderImage createNode() => new RenderImage(image, size);
497 565
498 final sky.Image image; 566 final sky.Image image;
499 final Size size; 567 final Size size;
500 568
569 @override
501 void syncRenderObject(Widget old) { 570 void syncRenderObject(Widget old) {
502 super.syncRenderObject(old); 571 super.syncRenderObject(old);
503 root.image = image; 572 root.image = image;
504 root.requestedSize = size; 573 root.requestedSize = size;
505 } 574 }
506 } 575 }
507 576
508 class FutureImage extends StatefulComponent { 577 class FutureImage extends StatefulComponent {
509 FutureImage({ this.image, this.size }); 578 FutureImage({ this.image, this.size });
510 579
511 Future<sky.Image> image; 580 Future<sky.Image> image;
512 Size size; 581 Size size;
513 sky.Image _resolvedImage; 582 sky.Image _resolvedImage;
514 583
584 @override
515 void didMount() { 585 void didMount() {
516 super.didMount(); 586 super.didMount();
517 _resolveImage(); 587 _resolveImage();
518 } 588 }
519 589
520 void _resolveImage() { 590 void _resolveImage() {
521 image.then((sky.Image resolvedImage) { 591 image.then((sky.Image resolvedImage) {
522 if (!mounted) 592 if (!mounted)
523 return; 593 return;
524 setState(() { 594 setState(() {
525 _resolvedImage = resolvedImage; 595 _resolvedImage = resolvedImage;
526 }); 596 });
527 }); 597 });
528 } 598 }
529 599
600 @override
530 void syncFields(FutureImage source) { 601 void syncFields(FutureImage source) {
531 bool needToResolveImage = (image != source.image); 602 bool needToResolveImage = (image != source.image);
532 image = source.image; 603 image = source.image;
533 size = source.size; 604 size = source.size;
534 if (needToResolveImage) 605 if (needToResolveImage)
535 _resolveImage(); 606 _resolveImage();
536 } 607 }
537 608
609 @override
538 Widget build() { 610 Widget build() {
539 return new Image(image: _resolvedImage, size: size); 611 return new Image(image: _resolvedImage, size: size);
540 } 612 }
541 } 613 }
542 614
543 class NetworkImage extends Component { 615 class NetworkImage extends Component {
544 NetworkImage({ String src, this.size }) : src = src, super(key: src); 616 NetworkImage({ String src, this.size }) : src = src, super(key: src);
545 617
546 final String src; 618 final String src;
547 final Size size; 619 final Size size;
548 620
621 @override
549 Widget build() { 622 Widget build() {
550 return new FutureImage(image: image_cache.load(src), size: size); 623 return new FutureImage(image: image_cache.load(src), size: size);
551 } 624 }
552 } 625 }
553 626
554 class AssetImage extends Component { 627 class AssetImage extends Component {
555 AssetImage({ this.bundle, String name, this.size }) 628 AssetImage({ this.bundle, String name, this.size })
556 : name = name, super(key: name); 629 : name = name, super(key: name);
557 630
558 final AssetBundle bundle; 631 final AssetBundle bundle;
559 final String name; 632 final String name;
560 final Size size; 633 final Size size;
561 634
635 @override
562 Widget build() { 636 Widget build() {
563 return new FutureImage(image: bundle.loadImage(name), size: size); 637 return new FutureImage(image: bundle.loadImage(name), size: size);
564 } 638 }
565 } 639 }
566 640
567 class WidgetToRenderBoxAdapter extends LeafRenderObjectWrapper { 641 class WidgetToRenderBoxAdapter extends LeafRenderObjectWrapper {
568 642
569 WidgetToRenderBoxAdapter(RenderBox renderBox) 643 WidgetToRenderBoxAdapter(RenderBox renderBox)
570 : renderBox = renderBox, 644 : renderBox = renderBox,
571 super(key: renderBox.hashCode.toString()); 645 super(key: renderBox.hashCode.toString());
572 646
647 @override
573 RenderBox get root => super.root; 648 RenderBox get root => super.root;
649
650 @override
574 RenderBox createNode() => this.renderBox; 651 RenderBox createNode() => this.renderBox;
575 652
576 final RenderBox renderBox; 653 final RenderBox renderBox;
577 654
655 @override
578 void syncRenderObject(Widget old) { 656 void syncRenderObject(Widget old) {
579 super.syncRenderObject(old); 657 super.syncRenderObject(old);
580 if (old != null) { 658 if (old != null) {
581 assert(old is WidgetToRenderBoxAdapter); 659 assert(old is WidgetToRenderBoxAdapter);
582 assert(root == old.root); 660 assert(root == old.root);
583 } 661 }
584 } 662 }
585 663
664 @override
586 void remove() { 665 void remove() {
587 RenderObjectWrapper ancestor = findAncestorRenderObjectWrapper(); 666 RenderObjectWrapper ancestor = findAncestorRenderObjectWrapper();
588 assert(ancestor is RenderObjectWrapper); 667 assert(ancestor is RenderObjectWrapper);
589 ancestor.detachChildRoot(this); 668 ancestor.detachChildRoot(this);
590 super.remove(); 669 super.remove();
591 } 670 }
592 671
593 } 672 }
OLDNEW
« no previous file with comments | « sky/sdk/lib/widgets/animated_component.dart ('k') | sky/sdk/lib/widgets/block_viewport.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698