parseStyle method
- BuildMetadata meta,
- String key,
- String value
inherited
Parses inline style key
and value
pair.
Implementation
void parseStyle(BuildMetadata meta, String key, String value) {
switch (key) {
case kCssBackground:
case kCssBackgroundColor:
_styleBgColor ??= StyleBgColor(this).buildOp;
meta.register(_styleBgColor);
break;
case kCssBorderBottom:
final borderBottom = tryParseCssBorderSide(value);
if (borderBottom != null) {
meta.register(TextStyleOps.textDecoOp(TextDeco(
color: borderBottom.color,
under: true,
style: borderBottom.style,
thickness: borderBottom.width,
)));
} else {
meta.register(TextStyleOps.textDecoOp(TextDeco(under: false)));
}
break;
case kCssBorderTop:
final borderTop = tryParseCssBorderSide(value);
if (borderTop != null) {
meta.register(TextStyleOps.textDecoOp(TextDeco(
color: borderTop.color,
over: true,
style: borderTop.style,
thickness: borderTop.width,
)));
} else {
meta.register(TextStyleOps.textDecoOp(TextDeco(over: false)));
}
break;
case kCssColor:
final color = tryParseColor(value);
if (color != null) meta.tsb(TextStyleOps.color, color);
break;
case kCssDirection:
meta.tsb(TextStyleOps.textDirection, value);
break;
case kCssDisplay:
switch (value) {
case kCssDisplayBlock:
meta.isBlockElement = true;
break;
case kCssDisplayInline:
case kCssDisplayInlineBlock:
meta.isBlockElement = false;
break;
case kCssDisplayNone:
meta.isNotRenderable = true;
break;
case kCssDisplayTable:
meta.register(TagTable(this, meta).op);
break;
}
break;
case kCssFontFamily:
final list = TextStyleOps.fontFamilyTryParse(value);
if (list != null) meta.tsb(TextStyleOps.fontFamily, list);
break;
case kCssFontSize:
meta.tsb(_tsbFontSize, value);
break;
case kCssFontStyle:
final fontStyle = TextStyleOps.fontStyleTryParse(value);
if (fontStyle != null) meta.tsb(TextStyleOps.fontStyle, fontStyle);
break;
case kCssFontWeight:
final fontWeight = TextStyleOps.fontWeightTryParse(value);
if (fontWeight != null) meta.tsb(TextStyleOps.fontWeight, fontWeight);
break;
case kCssHeight:
case kCssMaxHeight:
case kCssMaxWidth:
case kCssMinHeight:
case kCssMinWidth:
case kCssWidth:
_styleSizing ??= StyleSizing(this).buildOp;
meta.register(_styleSizing);
break;
case kCssLineHeight:
_tsbLineHeight ??= TextStyleOps.lineHeight(this);
meta.tsb(_tsbLineHeight, value);
break;
case kCssMaxLines:
case kCssMaxLinesWebkitLineClamp:
final maxLines = value == kCssMaxLinesNone ? -1 : int.tryParse(value);
if (maxLines != null) meta.tsb(TextStyleOps.maxLines, maxLines);
break;
case kCssTextAlign:
final textAlign = tryParseTextAlign(value);
if (textAlign != null) {
meta
..isBlockElement = true
..tsb(TextStyleOps.textAlign, textAlign);
}
break;
case kCssTextDecoration:
final textDeco = TextDeco.tryParse(value);
if (textDeco != null) meta.tsb(TextStyleOps.textDeco, textDeco);
break;
case kCssTextOverflow:
switch (value) {
case kCssTextOverflowClip:
meta.tsb(TextStyleOps.textOverflow, TextOverflow.clip);
break;
case kCssTextOverflowEllipsis:
meta.tsb(TextStyleOps.textOverflow, TextOverflow.ellipsis);
break;
}
break;
case kCssVerticalAlign:
_styleVerticalAlign ??= StyleVerticalAlign(this).buildOp;
meta.register(_styleVerticalAlign);
break;
}
if (key.startsWith(kCssMargin)) {
_styleMargin ??= StyleMargin(this).buildOp;
meta.register(_styleMargin);
}
if (key.startsWith(kCssPadding)) {
_stylePadding ??= StylePadding(this).buildOp;
meta.register(_stylePadding);
}
}