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,13 +289,16 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati ...@@ -289,13 +289,16 @@ 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;
if (children != null) {
for (final InlineSpan child in children) {
child.build( child.build(
builder, builder,
textScaleFactor: textScaleFactor, textScaleFactor: textScaleFactor,
dimensions: dimensions, dimensions: dimensions,
); );
} }
}
if (hasStyle) { if (hasStyle) {
builder.pop(); builder.pop();
} }
...@@ -311,21 +314,27 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati ...@@ -311,21 +314,27 @@ 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 (children != null) {
for (final InlineSpan child in children) {
if (!child.visitChildren(visitor)) { if (!child.visitChildren(visitor)) {
return false; return false;
} }
} }
}
return true; return true;
} }
@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 (children != null) {
for (final InlineSpan child in children) {
if (!visitor(child)) { if (!visitor(child)) {
return false; return false;
} }
} }
}
return true; return true;
} }
...@@ -393,7 +402,9 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati ...@@ -393,7 +402,9 @@ 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 (children != null) {
for (final InlineSpan child in children) {
if (child is TextSpan) { if (child is TextSpan) {
child.computeSemanticsInformation( child.computeSemanticsInformation(
collector, collector,
...@@ -405,6 +416,7 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati ...@@ -405,6 +416,7 @@ class TextSpan extends InlineSpan implements HitTestTarget, MouseTrackerAnnotati
} }
} }
} }
}
@override @override
int? codeUnitAtVisitor(int index, Accumulator offset) { int? codeUnitAtVisitor(int index, Accumulator offset) {
......
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