diff --git a/lib/src/builtins/interactive_element_builtin.dart b/lib/src/builtins/interactive_element_builtin.dart index d430b3a847..f0f052676c 100644 --- a/lib/src/builtins/interactive_element_builtin.dart +++ b/lib/src/builtins/interactive_element_builtin.dart @@ -30,6 +30,7 @@ class InteractiveElementBuiltIn extends HtmlExtension { style: Style( color: Colors.blue, textDecoration: TextDecoration.underline, + textDecorationColor: Colors.blue, ), node: context.node, elementId: context.id, diff --git a/lib/src/builtins/styled_element_builtin.dart b/lib/src/builtins/styled_element_builtin.dart index a750c93187..a56a8f278d 100644 --- a/lib/src/builtins/styled_element_builtin.dart +++ b/lib/src/builtins/styled_element_builtin.dart @@ -414,9 +414,17 @@ class StyledElementBuiltIn extends HtmlExtension { continue monospace; underline: case "u": - styledElement.style = Style( - textDecoration: TextDecoration.underline, - ); + for (var child in styledElement.children) { + if (child.attributes.containsKey("style")) { + final newStyle = inlineCssToStyle(child.attributes["style"], null); + if (newStyle != null) { + styledElement.style = styledElement.style + .merge(Style(textDecorationColor: newStyle.color)); + } + } + } + styledElement.style = styledElement.style + .merge(Style(textDecoration: TextDecoration.underline)); break; case "var": continue italics; diff --git a/lib/src/css_parser.dart b/lib/src/css_parser.dart index 57169787bc..02cbe8a3ae 100644 --- a/lib/src/css_parser.dart +++ b/lib/src/css_parser.dart @@ -292,7 +292,7 @@ Style declarationsToStyle(Map> declarations) { style.border = newBorder; break; case 'color': - style.color = + style.color = style.textDecorationColor = ExpressionMapping.expressionToColor(value.first) ?? style.color; break; case 'direction': diff --git a/lib/src/style.dart b/lib/src/style.dart index d19fede664..014f7ff91f 100644 --- a/lib/src/style.dart +++ b/lib/src/style.dart @@ -404,6 +404,10 @@ class Style { child.textDecoration ?? TextDecoration.none, textDecoration ?? TextDecoration.none, ]), + textDecorationColor: child.textDecorationColor ?? textDecorationColor, + textDecorationThickness: + child.textDecorationThickness ?? textDecorationThickness, + textDecorationStyle: child.textDecorationStyle ?? textDecorationStyle, textShadow: child.textShadow ?? textShadow, whiteSpace: child.whiteSpace ?? whiteSpace, wordSpacing: child.wordSpacing ?? wordSpacing,