Skip to content

Commit 17735ce

Browse files
authored
Merge pull request Sub6Resources#519 from vrtdev/bugfix/491-table-columns-intrinsic-width
Use intrinsic with for <table> columns with otherwise undefined size
2 parents c914679 + c6d6fa9 commit 17735ce

File tree

2 files changed

+42
-34
lines changed

2 files changed

+42
-34
lines changed

lib/src/layout_element.dart

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,18 @@ class TableLayoutElement extends LayoutElement {
3131

3232
@override
3333
Widget toWidget(RenderContext context) {
34+
return Container(
35+
decoration: BoxDecoration(
36+
color: style.backgroundColor,
37+
border: style.border,
38+
),
39+
width: style.width,
40+
height: style.height,
41+
child: _layoutCells(context),
42+
);
43+
}
44+
45+
Widget _layoutCells(RenderContext context) {
3446
final rows = <TableRowLayoutElement>[];
3547
List<TrackSize> columnSizes = <TrackSize>[];
3648
for (var child in children) {
@@ -48,14 +60,14 @@ class TableLayoutElement extends LayoutElement {
4860
colWidth.substring(0, colWidth.length - 1));
4961
return percentageSize != null && !percentageSize.isNaN
5062
? FlexibleTrackSize(percentageSize * 0.01)
51-
: FlexibleTrackSize(1);
63+
: IntrinsicContentTrackSize();
5264
} else if (colWidth != null) {
5365
final fixedPxSize = double.tryParse(colWidth);
5466
return fixedPxSize != null
5567
? FixedTrackSize(fixedPxSize)
56-
: FlexibleTrackSize(1);
68+
: IntrinsicContentTrackSize();
5769
} else {
58-
return FlexibleTrackSize(1);
70+
return IntrinsicContentTrackSize();
5971
}
6072
});
6173
})
@@ -101,7 +113,8 @@ class TableLayoutElement extends LayoutElement {
101113
),
102114
child: SizedBox.expand(
103115
child: Container(
104-
alignment: child.style.alignment ?? style.alignment ??
116+
alignment: child.style.alignment ??
117+
style.alignment ??
105118
Alignment.centerLeft,
106119
child: StyledText(
107120
textSpan: context.parser.parseTree(context, child),
@@ -123,29 +136,21 @@ class TableLayoutElement extends LayoutElement {
123136
}
124137

125138
// Create column tracks (insofar there were no colgroups that already defined them)
126-
List<TrackSize> finalColumnSizes = (columnSizes ?? <TrackSize>[]).take(
127-
columnMax).toList();
139+
List<TrackSize> finalColumnSizes =
140+
(columnSizes ?? <TrackSize>[]).take(columnMax).toList();
128141
finalColumnSizes += List.generate(
129142
max(0, columnMax - finalColumnSizes.length),
130-
(_) => FlexibleTrackSize(1));
131-
return Container(
132-
decoration: BoxDecoration(
133-
color: style.backgroundColor,
134-
border: style.border,
135-
),
136-
width: style.width,
137-
height: style.height,
138-
child: LayoutGrid(
139-
gridFit: GridFit.loose,
140-
templateColumnSizes: finalColumnSizes,
141-
templateRowSizes: rowSizes,
142-
children: cells,
143-
),
143+
(_) => IntrinsicContentTrackSize());
144+
145+
return LayoutGrid(
146+
gridFit: GridFit.loose,
147+
templateColumnSizes: finalColumnSizes,
148+
templateRowSizes: rowSizes,
149+
children: cells,
144150
);
145151
}
146152
}
147153

148-
149154
class TableSectionLayoutElement extends LayoutElement {
150155
TableSectionLayoutElement({
151156
String name,
@@ -185,12 +190,12 @@ class TableCellElement extends StyledElement {
185190
Style style,
186191
dom.Element node,
187192
}) : super(
188-
name: name,
189-
elementId: elementId,
190-
elementClasses: elementClasses,
191-
children: children,
192-
style: style,
193-
node: node) {
193+
name: name,
194+
elementId: elementId,
195+
elementClasses: elementClasses,
196+
children: children,
197+
style: style,
198+
node: node) {
194199
colspan = _parseSpan(this, "colspan");
195200
rowspan = _parseSpan(this, "rowspan");
196201
}
@@ -201,8 +206,9 @@ class TableCellElement extends StyledElement {
201206
}
202207
}
203208

204-
TableCellElement parseTableCellElement(dom.Element element,
205-
List<StyledElement> children,
209+
TableCellElement parseTableCellElement(
210+
dom.Element element,
211+
List<StyledElement> children,
206212
) {
207213
final cell = TableCellElement(
208214
name: element.localName,
@@ -228,8 +234,9 @@ class TableStyleElement extends StyledElement {
228234
}) : super(name: name, children: children, style: style, node: node);
229235
}
230236

231-
TableStyleElement parseTableDefinitionElement(dom.Element element,
232-
List<StyledElement> children,
237+
TableStyleElement parseTableDefinitionElement(
238+
dom.Element element,
239+
List<StyledElement> children,
233240
) {
234241
switch (element.localName) {
235242
case "colgroup":
@@ -244,8 +251,9 @@ TableStyleElement parseTableDefinitionElement(dom.Element element,
244251
}
245252
}
246253

247-
LayoutElement parseLayoutElement(dom.Element element,
248-
List<StyledElement> children,
254+
LayoutElement parseLayoutElement(
255+
dom.Element element,
256+
List<StyledElement> children,
249257
) {
250258
switch (element.localName) {
251259
case "table":

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ dependencies:
1616
css_colors: ^1.0.2
1717

1818
# Plugins for rendering the <table> tag.
19-
flutter_layout_grid: ^0.10.2
19+
flutter_layout_grid: ^0.10.5
2020

2121
# Plugins for rendering the <video> tag.
2222
video_player: ^1.0.1

0 commit comments

Comments
 (0)