Skip to content

Commit 942f0c1

Browse files
committed
Improve shrinkwrap further
1 parent 61a1e21 commit 942f0c1

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

lib/html_parser.dart

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:collection';
22
import 'dart:math';
33

4+
import 'package:collection/collection.dart';
45
import 'package:csslib/parser.dart' as cssparser;
56
import 'package:csslib/visitor.dart' as css;
67
import 'package:flutter/gestures.dart';
@@ -286,12 +287,18 @@ class HtmlParser extends StatelessWidget {
286287
style: tree.style,
287288
shrinkWrap: context.parser.shrinkWrap,
288289
children: tree.children
289-
.expand((tree) => [
290-
parseTree(newContext, tree),
290+
.expandIndexed((i, childTree) => [
291291
if (shrinkWrap &&
292-
tree.style.display == Display.BLOCK &&
293-
tree.element?.localName != "html" &&
294-
tree.element?.localName != "body")
292+
childTree.style.display == Display.BLOCK &&
293+
i > 0 &&
294+
tree.children[i - 1] is ReplacedElement)
295+
TextSpan(text: "\n"),
296+
parseTree(newContext, childTree),
297+
if (shrinkWrap &&
298+
i != tree.children.length - 1 &&
299+
childTree.style.display == Display.BLOCK &&
300+
childTree.element?.localName != "html" &&
301+
childTree.element?.localName != "body")
295302
TextSpan(text: "\n"),
296303
])
297304
.toList(),
@@ -433,21 +440,26 @@ class HtmlParser extends StatelessWidget {
433440
child: StyledText(
434441
textSpan: TextSpan(
435442
style: newContext.style.generateTextStyle(),
436-
children: tree.children
437-
.map((tree) => parseTree(newContext, tree))
438-
.toList(),
443+
children: tree.children.map((tree) => parseTree(newContext, tree)).toList(),
439444
),
440445
style: newContext.style,
441-
renderContext: context,
446+
renderContext: newContext,
442447
),
443448
),
444449
);
445450
} else {
446451
///[tree] is an inline element.
447452
return TextSpan(
448453
style: newContext.style.generateTextStyle(),
449-
children:
450-
tree.children.map((tree) => parseTree(newContext, tree)).toList(),
454+
children: tree.children
455+
.expand((tree) => [
456+
parseTree(newContext, tree),
457+
if (tree.style.display == Display.BLOCK &&
458+
tree.element?.localName != "html" &&
459+
tree.element?.localName != "body")
460+
TextSpan(text: "\n"),
461+
])
462+
.toList(),
451463
);
452464
}
453465
}

lib/src/replaced_element.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,13 +283,13 @@ class MathElement extends ReplacedElement {
283283
required this.element,
284284
this.texStr,
285285
String name = "math",
286-
}) : super(name: name, alignment: PlaceholderAlignment.middle, style: Style(), elementId: element.id);
286+
}) : super(name: name, alignment: PlaceholderAlignment.middle, style: Style(display: Display.BLOCK), elementId: element.id);
287287

288288
@override
289289
Widget toWidget(RenderContext context) {
290290
texStr = parseMathRecursive(element, r'');
291291
return Container(
292-
width: MediaQuery.of(context.buildContext).size.width,
292+
width: context.parser.shrinkWrap ? null : MediaQuery.of(context.buildContext).size.width,
293293
child: Math.tex(
294294
texStr ?? '',
295295
mathStyle: MathStyle.display,

0 commit comments

Comments
 (0)