David PHAM-VAN

Improve TextStyle decoration merging

@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 - Add LinearProgressIndicator 7 - Add LinearProgressIndicator
8 - Add PdfOutline.toString() 8 - Add PdfOutline.toString()
9 - Add equality operator to PdfPageFormat 9 - Add equality operator to PdfPageFormat
  10 +- Improve TextStyle decoration merging
10 11
11 ## 3.3.0 12 ## 3.3.0
12 13
@@ -43,11 +43,6 @@ class TextDecoration { @@ -43,11 +43,6 @@ class TextDecoration {
43 43
44 final int _mask; 44 final int _mask;
45 45
46 - /// Whether this decoration will paint at least as much decoration as the given decoration.  
47 - bool contains(TextDecoration other) {  
48 - return (_mask | other._mask) == _mask;  
49 - }  
50 -  
51 /// Do not draw a decoration 46 /// Do not draw a decoration
52 static const TextDecoration none = TextDecoration._(0x0); 47 static const TextDecoration none = TextDecoration._(0x0);
53 48
@@ -60,6 +55,18 @@ class TextDecoration { @@ -60,6 +55,18 @@ class TextDecoration {
60 /// Draw a line through each line of text 55 /// Draw a line through each line of text
61 static const TextDecoration lineThrough = TextDecoration._(0x4); 56 static const TextDecoration lineThrough = TextDecoration._(0x4);
62 57
  58 + TextDecoration merge(TextDecoration? other) {
  59 + if (other == null) {
  60 + return this;
  61 + }
  62 + return TextDecoration._(_mask | other._mask);
  63 + }
  64 +
  65 + /// Whether this decoration will paint at least as much decoration as the given decoration.
  66 + bool contains(TextDecoration other) {
  67 + return (_mask | other._mask) == _mask;
  68 + }
  69 +
63 @override 70 @override
64 bool operator ==(dynamic other) { 71 bool operator ==(dynamic other) {
65 if (other is! TextDecoration) { 72 if (other is! TextDecoration) {
@@ -340,7 +347,7 @@ class TextStyle { @@ -340,7 +347,7 @@ class TextStyle {
340 lineSpacing: other.lineSpacing, 347 lineSpacing: other.lineSpacing,
341 height: other.height, 348 height: other.height,
342 background: other.background, 349 background: other.background,
343 - decoration: other.decoration, 350 + decoration: decoration?.merge(other.decoration),
344 decorationColor: other.decorationColor, 351 decorationColor: other.decorationColor,
345 decorationStyle: other.decorationStyle, 352 decorationStyle: other.decorationStyle,
346 decorationThickness: other.decorationThickness, 353 decorationThickness: other.decorationThickness,