@@ -667,16 +667,20 @@ class RenderTableViewport extends RenderTwoDimensionalViewport {
667667 }) {
668668 // TODO(Piinks): Assert here or somewhere else merged cells cannot span
669669 // pinned and unpinned cells (for merged cell follow-up), https://github.com/flutter/flutter/issues/131224
670+ _Span colSpan, rowSpan;
670671 double yPaintOffset = - offset.dy;
671672 for (int row = start.row; row <= end.row; row += 1 ) {
672673 double xPaintOffset = - offset.dx;
673- final double rowHeight = _rowMetrics[row]! .extent;
674- yPaintOffset += _rowMetrics[row]! .configuration.padding.leading;
674+ rowSpan = _rowMetrics[row]! ;
675+ final double rowHeight = rowSpan.extent;
676+ yPaintOffset += rowSpan.configuration.padding.leading;
675677 for (int column = start.column; column <= end.column; column += 1 ) {
676- final double columnWidth = _columnMetrics[column]! .extent;
677- xPaintOffset += _columnMetrics[column]! .configuration.padding.leading;
678+ colSpan = _columnMetrics[column]! ;
679+ final double columnWidth = colSpan.extent;
680+ xPaintOffset += colSpan.configuration.padding.leading;
678681
679682 final TableVicinity vicinity = TableVicinity (column: column, row: row);
683+ print (vicinity);
680684 // TODO(Piinks): Add back merged cells, https://github.com/flutter/flutter/issues/131224
681685
682686 final RenderBox ? cell = buildOrObtainChildFor (vicinity);
@@ -840,10 +844,11 @@ class RenderTableViewport extends RenderTwoDimensionalViewport {
840844 final LinkedHashMap <Rect , TableSpanDecoration > backgroundColumns =
841845 LinkedHashMap <Rect , TableSpanDecoration >();
842846
847+ final _Span rowSpan = _rowMetrics[leading.row]! ;
843848 for (int column = leading.column; column <= trailing.column; column++ ) {
844- final _Span span = _columnMetrics[column]! ;
845- if (span .configuration.backgroundDecoration != null ||
846- span .configuration.foregroundDecoration != null ) {
849+ final _Span columnSpan = _columnMetrics[column]! ;
850+ if (columnSpan .configuration.backgroundDecoration != null ||
851+ columnSpan .configuration.foregroundDecoration != null ) {
847852 final RenderBox leadingCell = getChildFor (
848853 TableVicinity (column: column, row: leading.row),
849854 )! ;
@@ -852,17 +857,28 @@ class RenderTableViewport extends RenderTwoDimensionalViewport {
852857 )! ;
853858
854859 final Rect rect = Rect .fromPoints (
855- parentDataOf (leadingCell).paintOffset! + offset,
860+ parentDataOf (leadingCell).paintOffset! +
861+ offset -
862+ Offset (
863+ columnSpan.configuration.padding.leading,
864+ rowSpan.configuration.padding.leading,
865+ ),
856866 parentDataOf (trailingCell).paintOffset! +
857867 Offset (trailingCell.size.width, trailingCell.size.height) +
858- offset,
868+ offset +
869+ Offset (
870+ columnSpan.configuration.padding.trailing,
871+ rowSpan.configuration.padding.trailing,
872+ ),
859873 );
860874
861- if (span.configuration.backgroundDecoration != null ) {
862- backgroundColumns[rect] = span.configuration.backgroundDecoration! ;
875+ if (columnSpan.configuration.backgroundDecoration != null ) {
876+ backgroundColumns[rect] =
877+ columnSpan.configuration.backgroundDecoration! ;
863878 }
864- if (span.configuration.foregroundDecoration != null ) {
865- foregroundColumns[rect] = span.configuration.foregroundDecoration! ;
879+ if (columnSpan.configuration.foregroundDecoration != null ) {
880+ foregroundColumns[rect] =
881+ columnSpan.configuration.foregroundDecoration! ;
866882 }
867883 }
868884 }
@@ -873,10 +889,11 @@ class RenderTableViewport extends RenderTwoDimensionalViewport {
873889 final LinkedHashMap <Rect , TableSpanDecoration > backgroundRows =
874890 LinkedHashMap <Rect , TableSpanDecoration >();
875891
892+ final _Span columnSpan = _columnMetrics[leading.column]! ;
876893 for (int row = leading.row; row <= trailing.row; row++ ) {
877- final _Span span = _rowMetrics[row]! ;
878- if (span .configuration.backgroundDecoration != null ||
879- span .configuration.foregroundDecoration != null ) {
894+ final _Span rowSpan = _rowMetrics[row]! ;
895+ if (rowSpan .configuration.backgroundDecoration != null ||
896+ rowSpan .configuration.foregroundDecoration != null ) {
880897 final RenderBox leadingCell = getChildFor (
881898 TableVicinity (column: leading.column, row: row),
882899 )! ;
@@ -885,16 +902,25 @@ class RenderTableViewport extends RenderTwoDimensionalViewport {
885902 )! ;
886903
887904 final Rect rect = Rect .fromPoints (
888- parentDataOf (leadingCell).paintOffset! + offset,
905+ parentDataOf (leadingCell).paintOffset! +
906+ offset -
907+ Offset (
908+ columnSpan.configuration.padding.leading,
909+ rowSpan.configuration.padding.leading,
910+ ),
889911 parentDataOf (trailingCell).paintOffset! +
890912 Offset (trailingCell.size.width, trailingCell.size.height) +
891- offset,
913+ offset +
914+ Offset (
915+ columnSpan.configuration.padding.leading,
916+ rowSpan.configuration.padding.trailing,
917+ ),
892918 );
893- if (span .configuration.backgroundDecoration != null ) {
894- backgroundRows[rect] = span .configuration.backgroundDecoration! ;
919+ if (rowSpan .configuration.backgroundDecoration != null ) {
920+ backgroundRows[rect] = rowSpan .configuration.backgroundDecoration! ;
895921 }
896- if (span .configuration.foregroundDecoration != null ) {
897- foregroundRows[rect] = span .configuration.foregroundDecoration! ;
922+ if (rowSpan .configuration.foregroundDecoration != null ) {
923+ foregroundRows[rect] = rowSpan .configuration.foregroundDecoration! ;
898924 }
899925 }
900926 }
@@ -1032,7 +1058,12 @@ class _Span
10321058 bool get isPinned => _isPinned;
10331059 late bool _isPinned;
10341060
1035- double get trailingOffset => leadingOffset + extent;
1061+ double get trailingOffset {
1062+ return leadingOffset +
1063+ extent +
1064+ configuration.padding.leading +
1065+ configuration.padding.trailing;
1066+ }
10361067
10371068 // ---- Span Management ----
10381069
0 commit comments