David PHAM-VAN

Fix RichText annotations

@@ -360,7 +360,10 @@ class _WidgetSpan extends _Span { @@ -360,7 +360,10 @@ class _WidgetSpan extends _Span {
360 } 360 }
361 361
362 typedef _VisitorCallback = bool Function( 362 typedef _VisitorCallback = bool Function(
363 - InlineSpan span, TextStyle? parentStyle); 363 + InlineSpan span,
  364 + TextStyle? parentStyle,
  365 + AnnotationBuilder? annotation,
  366 +);
364 367
365 @immutable 368 @immutable
366 abstract class InlineSpan { 369 abstract class InlineSpan {
@@ -374,16 +377,24 @@ abstract class InlineSpan { @@ -374,16 +377,24 @@ abstract class InlineSpan {
374 377
375 String toPlainText() { 378 String toPlainText() {
376 final buffer = StringBuffer(); 379 final buffer = StringBuffer();
377 - visitChildren((InlineSpan span, TextStyle? style) { 380 + visitChildren((
  381 + InlineSpan span,
  382 + TextStyle? style,
  383 + AnnotationBuilder? annotation,
  384 + ) {
378 if (span is TextSpan) { 385 if (span is TextSpan) {
379 buffer.write(span.text); 386 buffer.write(span.text);
380 } 387 }
381 return true; 388 return true;
382 - }, null); 389 + }, null, null);
383 return buffer.toString(); 390 return buffer.toString();
384 } 391 }
385 392
386 - bool visitChildren(_VisitorCallback visitor, TextStyle? parentStyle); 393 + bool visitChildren(
  394 + _VisitorCallback visitor,
  395 + TextStyle? parentStyle,
  396 + AnnotationBuilder? annotation,
  397 + );
387 } 398 }
388 399
389 class WidgetSpan extends InlineSpan { 400 class WidgetSpan extends InlineSpan {
@@ -400,10 +411,15 @@ class WidgetSpan extends InlineSpan { @@ -400,10 +411,15 @@ class WidgetSpan extends InlineSpan {
400 411
401 /// Calls `visitor` on this [WidgetSpan]. There are no children spans to walk. 412 /// Calls `visitor` on this [WidgetSpan]. There are no children spans to walk.
402 @override 413 @override
403 - bool visitChildren(_VisitorCallback visitor, TextStyle? parentStyle) { 414 + bool visitChildren(
  415 + _VisitorCallback visitor,
  416 + TextStyle? parentStyle,
  417 + AnnotationBuilder? annotation,
  418 + ) {
404 final _style = parentStyle?.merge(style); 419 final _style = parentStyle?.merge(style);
  420 + final _a = this.annotation ?? annotation;
405 421
406 - return visitor(this, _style); 422 + return visitor(this, _style, _a);
407 } 423 }
408 } 424 }
409 425
@@ -421,17 +437,22 @@ class TextSpan extends InlineSpan { @@ -421,17 +437,22 @@ class TextSpan extends InlineSpan {
421 final List<InlineSpan>? children; 437 final List<InlineSpan>? children;
422 438
423 @override 439 @override
424 - bool visitChildren(_VisitorCallback visitor, TextStyle? parentStyle) { 440 + bool visitChildren(
  441 + _VisitorCallback visitor,
  442 + TextStyle? parentStyle,
  443 + AnnotationBuilder? annotation,
  444 + ) {
425 final _style = parentStyle?.merge(style); 445 final _style = parentStyle?.merge(style);
  446 + final _a = this.annotation ?? annotation;
426 447
427 if (text != null) { 448 if (text != null) {
428 - if (!visitor(this, _style)) { 449 + if (!visitor(this, _style, _a)) {
429 return false; 450 return false;
430 } 451 }
431 } 452 }
432 if (children != null) { 453 if (children != null) {
433 for (var child in children!) { 454 for (var child in children!) {
434 - if (!child.visitChildren(visitor, _style)) { 455 + if (!child.visitChildren(visitor, _style, _a)) {
435 return false; 456 return false;
436 } 457 }
437 } 458 }
@@ -571,7 +592,11 @@ class RichText extends Widget { @@ -571,7 +592,11 @@ class RichText extends Widget {
571 var spanStart = 0; 592 var spanStart = 0;
572 var decorationStart = 0; 593 var decorationStart = 0;
573 594
574 - text.visitChildren((InlineSpan span, TextStyle? style) { 595 + text.visitChildren((
  596 + InlineSpan span,
  597 + TextStyle? style,
  598 + AnnotationBuilder? annotation,
  599 + ) {
575 if (span is TextSpan) { 600 if (span is TextSpan) {
576 if (span.text == null) { 601 if (span.text == null) {
577 return true; 602 return true;
@@ -653,7 +678,7 @@ class RichText extends Widget { @@ -653,7 +678,7 @@ class RichText extends Widget {
653 spanCount > 1, 678 spanCount > 1,
654 _TextDecoration( 679 _TextDecoration(
655 style, 680 style,
656 - span.annotation, 681 + annotation,
657 _spans.length - 1, 682 _spans.length - 1,
658 _spans.length - 1, 683 _spans.length - 1,
659 ), 684 ),
@@ -764,7 +789,7 @@ class RichText extends Widget { @@ -764,7 +789,7 @@ class RichText extends Widget {
764 spanCount > 1, 789 spanCount > 1,
765 _TextDecoration( 790 _TextDecoration(
766 style, 791 style,
767 - span.annotation, 792 + annotation,
768 _spans.length - 1, 793 _spans.length - 1,
769 _spans.length - 1, 794 _spans.length - 1,
770 ), 795 ),
@@ -774,7 +799,7 @@ class RichText extends Widget { @@ -774,7 +799,7 @@ class RichText extends Widget {
774 } 799 }
775 800
776 return true; 801 return true;
777 - }, defaultstyle); 802 + }, defaultstyle, null);
778 803
779 width = math.max( 804 width = math.max(
780 width, 805 width,
1 # Changelog 1 # Changelog
2 2
  3 +## 5.0.3
  4 +
  5 +- Fix RichText annotations
  6 +
3 ## 5.0.2 7 ## 5.0.2
4 8
5 - Fix iOS/macOS release build not working 9 - Fix iOS/macOS release build not working
@@ -7,7 +7,7 @@ description: > @@ -7,7 +7,7 @@ description: >
7 homepage: https://github.com/DavBfr/dart_pdf/tree/master/printing 7 homepage: https://github.com/DavBfr/dart_pdf/tree/master/printing
8 repository: https://github.com/DavBfr/dart_pdf 8 repository: https://github.com/DavBfr/dart_pdf
9 issue_tracker: https://github.com/DavBfr/dart_pdf/issues 9 issue_tracker: https://github.com/DavBfr/dart_pdf/issues
10 -version: 5.0.2 10 +version: 5.0.3
11 11
12 environment: 12 environment:
13 sdk: ">=2.12.0-0 <3.0.0" 13 sdk: ">=2.12.0-0 <3.0.0"