Skip to content

Commit 9a47423

Browse files
committed
Fix Sub6Resources#919 by ensuring non-negative insets are used for all margins and paddings applied in the library
1 parent a8467db commit 9a47423

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

lib/html_parser.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ class HtmlParser extends StatelessWidget {
422422
children: [
423423
tree.style.listStylePosition == ListStylePosition.OUTSIDE ?
424424
Padding(
425-
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),
425+
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),
426426
child: newContext.style.markerContent
427427
) : Container(height: 0, width: 0),
428428
Text("\t", textAlign: TextAlign.right),
@@ -1053,8 +1053,8 @@ class ContainerSpan extends StatelessWidget {
10531053
),
10541054
height: style.height,
10551055
width: style.width,
1056-
padding: style.padding,
1057-
margin: style.margin,
1056+
padding: style.padding?.nonNegative,
1057+
margin: style.margin?.nonNegative,
10581058
alignment: shrinkWrap ? null : style.alignment,
10591059
child: child ??
10601060
StyledText(

lib/src/layout_element.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import 'package:flutter_html/html_parser.dart';
55
import 'package:flutter_html/src/anchor.dart';
66
import 'package:flutter_html/src/html_elements.dart';
77
import 'package:flutter_html/src/styled_element.dart';
8+
import 'package:flutter_html/src/utils.dart';
89
import 'package:flutter_html/style.dart';
910
import 'package:flutter_layout_grid/flutter_layout_grid.dart';
1011
import 'package:html/dom.dart' as dom;
@@ -33,8 +34,8 @@ class TableLayoutElement extends LayoutElement {
3334
Widget toWidget(RenderContext context) {
3435
return Container(
3536
key: AnchorKey.of(context.parser.key, this),
36-
margin: style.margin,
37-
padding: style.padding,
37+
padding: style.padding?.nonNegative,
38+
margin: style.margin?.nonNegative,
3839
decoration: BoxDecoration(
3940
color: style.backgroundColor,
4041
border: style.border,
@@ -115,7 +116,7 @@ class TableLayoutElement extends LayoutElement {
115116
cells.add(GridPlacement(
116117
child: Container(
117118
width: double.infinity,
118-
padding: child.style.padding ?? row.style.padding,
119+
padding: child.style.padding?.nonNegative ?? row.style.padding?.nonNegative,
119120
decoration: BoxDecoration(
120121
color: child.style.backgroundColor ?? row.style.backgroundColor,
121122
border: child.style.border ?? row.style.border,

lib/src/utils.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,8 @@ extension TextTransformUtil on String? {
111111
return this;
112112
}
113113
}
114+
}
115+
116+
extension ClampedEdgeInsets on EdgeInsetsGeometry {
117+
EdgeInsetsGeometry get nonNegative => this.clamp(EdgeInsets.zero, const EdgeInsets.all(double.infinity));
114118
}

0 commit comments

Comments
 (0)