Skip to content

Commit 61a1e21

Browse files
committed
Fix shrinkWrap by flow the text to a next line for block elements; fixes #565
1 parent 6cc6c37 commit 61a1e21

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

lib/html_parser.dart

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,16 @@ class HtmlParser extends StatelessWidget {
285285
newContext: newContext,
286286
style: tree.style,
287287
shrinkWrap: context.parser.shrinkWrap,
288-
children: tree.children.map((tree) => parseTree(newContext, tree)).toList(),
288+
children: tree.children
289+
.expand((tree) => [
290+
parseTree(newContext, tree),
291+
if (shrinkWrap &&
292+
tree.style.display == Display.BLOCK &&
293+
tree.element?.localName != "html" &&
294+
tree.element?.localName != "body")
295+
TextSpan(text: "\n"),
296+
])
297+
.toList(),
289298
),
290299
);
291300
} else if (tree.style.display == Display.LIST_ITEM) {
@@ -827,7 +836,7 @@ class StyledText extends StatelessWidget {
827836
@override
828837
Widget build(BuildContext context) {
829838
return SizedBox(
830-
width: calculateWidth(style.display, renderContext),
839+
width: consumeExpandedBlock(style.display, renderContext),
831840
child: Text.rich(
832841
textSpan,
833842
style: style.generateTextStyle(),
@@ -840,13 +849,10 @@ class StyledText extends StatelessWidget {
840849
);
841850
}
842851

843-
double? calculateWidth(Display? display, RenderContext context) {
852+
double? consumeExpandedBlock(Display? display, RenderContext context) {
844853
if ((display == Display.BLOCK || display == Display.LIST_ITEM) && !renderContext.parser.shrinkWrap) {
845854
return double.infinity;
846855
}
847-
if (renderContext.parser.shrinkWrap) {
848-
return MediaQuery.of(context.buildContext).size.width;
849-
}
850856
return null;
851857
}
852858
}

0 commit comments

Comments
 (0)