David PHAM-VAN

Fix a bug with the RichText Widget

  1 +# 1.3.3
  2 +* Fix a bug with the RichText Widget
  3 +
1 # 1.3.2 4 # 1.3.2
2 * Fix dart lint warnings 5 * Fix dart lint warnings
3 * Improve font bounds calculation 6 * Improve font bounds calculation
@@ -165,8 +165,9 @@ class Table extends Widget implements SpanningWidget { @@ -165,8 +165,9 @@ class Table extends Widget implements SpanningWidget {
165 child.layout(context, const BoxConstraints()); 165 child.layout(context, const BoxConstraints());
166 final double calculatedWidth = 166 final double calculatedWidth =
167 child.box.width == double.infinity ? 0.0 : child.box.width; 167 child.box.width == double.infinity ? 0.0 : child.box.width;
168 - final double childFlex =  
169 - child is Expanded ? child.flex.toDouble() : 0.0; 168 + final double childFlex = child is Expanded
  169 + ? child.flex.toDouble()
  170 + : (child.box.width == double.infinity ? 1.0 : 0.0);
170 if (flex.length < n + 1) { 171 if (flex.length < n + 1) {
171 flex.add(childFlex); 172 flex.add(childFlex);
172 _widths.add(calculatedWidth); 173 _widths.add(calculatedWidth);
@@ -280,7 +281,13 @@ class Table extends Widget implements SpanningWidget { @@ -280,7 +281,13 @@ class Table extends Widget implements SpanningWidget {
280 continue; 281 continue;
281 } 282 }
282 for (Widget child in row.children) { 283 for (Widget child in row.children) {
  284 + context.canvas
  285 + ..saveContext()
  286 + ..drawRect(
  287 + child.box.x, child.box.y, child.box.width, child.box.height)
  288 + ..clipPath();
283 child.paint(context); 289 child.paint(context);
  290 + context.canvas.restoreContext();
284 } 291 }
285 if (index >= _context.lastLine) { 292 if (index >= _context.lastLine) {
286 break; 293 break;
@@ -186,10 +186,7 @@ class RichText extends Widget { @@ -186,10 +186,7 @@ class RichText extends Widget {
186 final PdfFontMetrics metrics = 186 final PdfFontMetrics metrics =
187 font.stringMetrics(word) * (style.fontSize * textScaleFactor); 187 font.stringMetrics(word) * (style.fontSize * textScaleFactor);
188 188
189 - if (offsetX + metrics.width > constraintWidth) {  
190 - if (wCount == 0) {  
191 - break;  
192 - } 189 + if (offsetX + metrics.width > constraintWidth && wCount > 0) {
193 width = math.max( 190 width = math.max(
194 width, 191 width,
195 _realignLine(_words.sublist(lineStart), constraintWidth, 192 _realignLine(_words.sublist(lineStart), constraintWidth,
@@ -229,6 +226,10 @@ class RichText extends Widget { @@ -229,6 +226,10 @@ class RichText extends Widget {
229 width, 226 width,
230 _realignLine( 227 _realignLine(
231 _words.sublist(lineStart), constraintWidth, offsetX, true, bottom)); 228 _words.sublist(lineStart), constraintWidth, offsetX, true, bottom));
  229 +
  230 + bottom ??= 0.0;
  231 + top ??= 0.0;
  232 +
232 box = PdfRect(0.0, 0.0, constraints.constrainWidth(width), 233 box = PdfRect(0.0, 0.0, constraints.constrainWidth(width),
233 constraints.constrainHeight(offsetY + bottom - top)); 234 constraints.constrainHeight(offsetY + bottom - top));
234 } 235 }
@@ -2,7 +2,7 @@ name: pdf @@ -2,7 +2,7 @@ name: pdf
2 author: David PHAM-VAN <dev.nfet.net@gmail.com> 2 author: David PHAM-VAN <dev.nfet.net@gmail.com>
3 description: A pdf producer for Dart. It can create pdf files for both web or flutter. 3 description: A pdf producer for Dart. It can create pdf files for both web or flutter.
4 homepage: https://github.com/DavBfr/dart_pdf/tree/master/pdf 4 homepage: https://github.com/DavBfr/dart_pdf/tree/master/pdf
5 -version: 1.3.2 5 +version: 1.3.3
6 6
7 environment: 7 environment:
8 sdk: ">=1.8.0 <3.0.0" 8 sdk: ">=1.8.0 <3.0.0"