OLD | NEW |
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 '../fn2.dart'; | 5 import '../fn2.dart'; |
6 import '../layout2.dart'; | 6 import '../layout2.dart'; |
7 import '../theme/typography.dart' as typography; | 7 import '../theme/typography.dart' as typography; |
8 | 8 |
9 // RenderNode | 9 // RenderNode |
10 class RenderScaffold extends RenderDecoratedBox { | 10 class RenderScaffold extends RenderDecoratedBox { |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 RenderBox get floatingActionButton => _floatingActionButton; | 72 RenderBox get floatingActionButton => _floatingActionButton; |
73 void set floatingActionButton (RenderBox value) { | 73 void set floatingActionButton (RenderBox value) { |
74 if (_floatingActionButton != null) | 74 if (_floatingActionButton != null) |
75 dropChild(_floatingActionButton); | 75 dropChild(_floatingActionButton); |
76 _floatingActionButton = value; | 76 _floatingActionButton = value; |
77 if (_floatingActionButton != null) | 77 if (_floatingActionButton != null) |
78 adoptChild(_floatingActionButton); | 78 adoptChild(_floatingActionButton); |
79 markNeedsLayout(); | 79 markNeedsLayout(); |
80 } | 80 } |
81 | 81 |
82 void layout(BoxConstraints constraints, { RenderNode relayoutSubtreeRoot }) { | 82 bool get sizedByParent => true; |
| 83 void performResize() { |
83 width = constraints.constrainWidth(double.INFINITY); | 84 width = constraints.constrainWidth(double.INFINITY); |
84 assert(width < double.INFINITY); | 85 assert(width < double.INFINITY); |
85 height = constraints.constrainHeight(double.INFINITY); | 86 height = constraints.constrainHeight(double.INFINITY); |
86 assert(height < double.INFINITY); | 87 assert(height < double.INFINITY); |
87 relayout(); | |
88 } | 88 } |
89 | 89 |
90 static const kToolbarHeight = 100.0; | 90 static const kToolbarHeight = 100.0; |
91 static const kStatusbarHeight = 50.0; | 91 static const kStatusbarHeight = 50.0; |
92 static const kButtonX = -16.0; // from right edge of body | 92 static const kButtonX = -16.0; // from right edge of body |
93 static const kButtonY = -16.0; // from bottom edge of body | 93 static const kButtonY = -16.0; // from bottom edge of body |
94 | 94 |
95 void relayout() { | 95 void performLayout() { |
96 double bodyHeight = height; | 96 double bodyHeight = height; |
97 double bodyPosition = 0.0; | 97 double bodyPosition = 0.0; |
98 if (toolbar != null) { | 98 if (toolbar != null) { |
99 toolbar.layout(new BoxConstraints.tight(width: width, height: kToolbarHeig
ht)); | 99 toolbar.layout(new BoxConstraints.tight(width: width, height: kToolbarHeig
ht)); |
100 assert(toolbar.parentData is BoxParentData); | 100 assert(toolbar.parentData is BoxParentData); |
101 toolbar.parentData.x = 0.0; | 101 toolbar.parentData.x = 0.0; |
102 toolbar.parentData.y = 0.0; | 102 toolbar.parentData.y = 0.0; |
103 bodyPosition = kToolbarHeight; | 103 bodyPosition = kToolbarHeight; |
104 bodyHeight -= kToolbarHeight; | 104 bodyHeight -= kToolbarHeight; |
105 } | 105 } |
(...skipping 15 matching lines...) Expand all Loading... |
121 assert(drawer.parentData is BoxParentData); | 121 assert(drawer.parentData is BoxParentData); |
122 drawer.parentData.x = 0.0; | 122 drawer.parentData.x = 0.0; |
123 drawer.parentData.y = 0.0; | 123 drawer.parentData.y = 0.0; |
124 } | 124 } |
125 if (floatingActionButton != null) { | 125 if (floatingActionButton != null) { |
126 floatingActionButton.layout(new BoxConstraints(minWidth: 0.0, maxWidth: wi
dth, minHeight: height, maxHeight: height)); | 126 floatingActionButton.layout(new BoxConstraints(minWidth: 0.0, maxWidth: wi
dth, minHeight: height, maxHeight: height)); |
127 assert(floatingActionButton.parentData is BoxParentData); | 127 assert(floatingActionButton.parentData is BoxParentData); |
128 floatingActionButton.parentData.x = width - xButtonX; | 128 floatingActionButton.parentData.x = width - xButtonX; |
129 floatingActionButton.parentData.y = bodyPosition + bodyHeight - kButtonY; | 129 floatingActionButton.parentData.y = bodyPosition + bodyHeight - kButtonY; |
130 } | 130 } |
131 layoutDone(); | |
132 } | 131 } |
133 | 132 |
134 void paint(RenderNodeDisplayList canvas) { | 133 void paint(RenderNodeDisplayList canvas) { |
135 if (body != null) | 134 if (body != null) |
136 canvas.paintChild(body, (body.parentData as BoxParentData).x, (body.parent
Data as BoxParentData).y); | 135 canvas.paintChild(body, (body.parentData as BoxParentData).x, (body.parent
Data as BoxParentData).y); |
137 if (statusbar != null) | 136 if (statusbar != null) |
138 canvas.paintChild(statusbar, (statusbar.parentData as BoxParentData).x, (s
tatusbar.parentData as BoxParentData).y); | 137 canvas.paintChild(statusbar, (statusbar.parentData as BoxParentData).x, (s
tatusbar.parentData as BoxParentData).y); |
139 if (toolbar != null) | 138 if (toolbar != null) |
140 canvas.paintChild(toolbar, (toolbar.parentData as BoxParentData).x, (toolb
ar.parentData as BoxParentData).y); | 139 canvas.paintChild(toolbar, (toolbar.parentData as BoxParentData).x, (toolb
ar.parentData as BoxParentData).y); |
141 if (floatingActionButton != null) | 140 if (floatingActionButton != null) |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 void syncRenderNode(UINode old) { | 219 void syncRenderNode(UINode old) { |
221 super.syncRenderNode(old); | 220 super.syncRenderNode(old); |
222 syncChild(toolbar, old is Scaffold ? old.toolbar : null, #toolbar); | 221 syncChild(toolbar, old is Scaffold ? old.toolbar : null, #toolbar); |
223 syncChild(body, old is Scaffold ? old.body : null, #body); | 222 syncChild(body, old is Scaffold ? old.body : null, #body); |
224 syncChild(statusbar, old is Scaffold ? old.statusbar : null, #statusbar); | 223 syncChild(statusbar, old is Scaffold ? old.statusbar : null, #statusbar); |
225 syncChild(drawer, old is Scaffold ? old.drawer : null, #drawer); | 224 syncChild(drawer, old is Scaffold ? old.drawer : null, #drawer); |
226 syncChild(floatingActionButton, old is Scaffold ? old.floatingActionButton :
null, #floatingActionButton); | 225 syncChild(floatingActionButton, old is Scaffold ? old.floatingActionButton :
null, #floatingActionButton); |
227 } | 226 } |
228 | 227 |
229 } | 228 } |
OLD | NEW |