Unverified Commit 4eefced8 authored by LongCatIsLooong's avatar LongCatIsLooong Committed by GitHub

Fix TextSpan gc regression (#126382)

`for (final InlineSpan child in children ?? const <InlineSpan>[])` bad

Fixes https://github.com/flutter/flutter/issues/126337
parent 5e459380
...@@ -289,12 +289,15 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati ...@@ -289,12 +289,15 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati
builder.addText('\uFFFD'); builder.addText('\uFFFD');
} }
} }
for (final InlineSpan child in children ?? const <InlineSpan>[]) { final List<InlineSpan>? children = this.children;
child.build( if (children != null) {
builder, for (final InlineSpan child in children) {
textScaleFactor: textScaleFactor, child.build(
dimensions: dimensions, builder,
); textScaleFactor: textScaleFactor,
dimensions: dimensions,
);
}
} }
if (hasStyle) { if (hasStyle) {
builder.pop(); builder.pop();
...@@ -311,9 +314,12 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati ...@@ -311,9 +314,12 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati
if (text != null && !visitor(this)) { if (text != null && !visitor(this)) {
return false; return false;
} }
for (final InlineSpan child in children ?? const <InlineSpan>[]) { final List<InlineSpan>? children = this.children;
if (!child.visitChildren(visitor)) { if (children != null) {
return false; for (final InlineSpan child in children) {
if (!child.visitChildren(visitor)) {
return false;
}
} }
} }
return true; return true;
...@@ -321,9 +327,12 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati ...@@ -321,9 +327,12 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati
@override @override
bool visitDirectChildren(InlineSpanVisitor visitor) { bool visitDirectChildren(InlineSpanVisitor visitor) {
for (final InlineSpan child in children ?? const <InlineSpan>[]) { final List<InlineSpan>? children = this.children;
if (!visitor(child)) { if (children != null) {
return false; for (final InlineSpan child in children) {
if (!visitor(child)) {
return false;
}
} }
} }
return true; return true;
...@@ -393,15 +402,18 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati ...@@ -393,15 +402,18 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati
recognizer: recognizer, recognizer: recognizer,
)); ));
} }
for (final InlineSpan child in children ?? const <InlineSpan>[]) { final List<InlineSpan>? children = this.children;
if (child is TextSpan) { if (children != null) {
child.computeSemanticsInformation( for (final InlineSpan child in children) {
collector, if (child is TextSpan) {
inheritedLocale: effectiveLocale, child.computeSemanticsInformation(
inheritedSpellOut: effectiveSpellOut, collector,
); inheritedLocale: effectiveLocale,
} else { inheritedSpellOut: effectiveSpellOut,
child.computeSemanticsInformation(collector); );
} else {
child.computeSemanticsInformation(collector);
}
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment