diff --git a/lib/html_parser.dart b/lib/html_parser.dart index 92a84eb3d6..e9fc82ca49 100644 --- a/lib/html_parser.dart +++ b/lib/html_parser.dart @@ -426,7 +426,7 @@ class HtmlParser extends StatelessWidget { children: [ tree.style.listStylePosition == ListStylePosition.OUTSIDE ? Padding( - padding: tree.style.padding ?? EdgeInsets.only(left: tree.style.direction != TextDirection.rtl ? 10.0 : 0.0, right: tree.style.direction == TextDirection.rtl ? 10.0 : 0.0), + padding: tree.style.padding?.nonNegative ?? EdgeInsets.only(left: tree.style.direction != TextDirection.rtl ? 10.0 : 0.0, right: tree.style.direction == TextDirection.rtl ? 10.0 : 0.0), child: newContext.style.markerContent ) : Container(height: 0, width: 0), Text("\t", textAlign: TextAlign.right, style: TextStyle(fontWeight: FontWeight.w400)), @@ -1056,8 +1056,8 @@ class ContainerSpan extends StatelessWidget { ), height: style.height, width: style.width, - padding: style.padding, - margin: style.margin?.clamp(EdgeInsets.zero, const EdgeInsets.all(double.infinity)), + padding: style.padding?.nonNegative, + margin: style.margin?.nonNegative, alignment: shrinkWrap ? null : style.alignment, child: child ?? StyledText( diff --git a/lib/src/layout_element.dart b/lib/src/layout_element.dart index c8b2e30ace..1b9810fd11 100644 --- a/lib/src/layout_element.dart +++ b/lib/src/layout_element.dart @@ -5,6 +5,7 @@ import 'package:flutter_html/html_parser.dart'; import 'package:flutter_html/src/anchor.dart'; import 'package:flutter_html/src/html_elements.dart'; import 'package:flutter_html/src/styled_element.dart'; +import 'package:flutter_html/src/utils.dart'; import 'package:flutter_html/style.dart'; import 'package:flutter_layout_grid/flutter_layout_grid.dart'; import 'package:html/dom.dart' as dom; @@ -33,8 +34,8 @@ class TableLayoutElement extends LayoutElement { Widget toWidget(RenderContext context) { return Container( key: AnchorKey.of(context.parser.key, this), - margin: style.margin, - padding: style.padding, + padding: style.padding?.nonNegative, + margin: style.margin?.nonNegative, alignment: style.alignment, decoration: BoxDecoration( color: style.backgroundColor, @@ -122,7 +123,7 @@ class TableLayoutElement extends LayoutElement { cells.add(GridPlacement( child: Container( width: double.infinity, - padding: child.style.padding ?? row.style.padding, + padding: child.style.padding?.nonNegative ?? row.style.padding?.nonNegative, decoration: BoxDecoration( color: child.style.backgroundColor ?? row.style.backgroundColor, border: child.style.border ?? row.style.border, diff --git a/lib/src/utils.dart b/lib/src/utils.dart index 0a898dea6f..0c6e490cb2 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -111,4 +111,8 @@ extension TextTransformUtil on String? { return this; } } +} + +extension ClampedEdgeInsets on EdgeInsetsGeometry { + EdgeInsetsGeometry get nonNegative => this.clamp(EdgeInsets.zero, const EdgeInsets.all(double.infinity)); } \ No newline at end of file