Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit 899548c

Browse files
authored
Assign debugCreator for more layers (#101899)
1 parent f6feb8f commit 899548c

File tree

5 files changed

+113
-3
lines changed

5 files changed

+113
-3
lines changed

packages/flutter/lib/src/rendering/proxy_box.dart

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,10 @@ class RenderOpacity extends RenderProxyBox {
899899
}
900900
assert(needsCompositing);
901901
layer = context.pushOpacity(offset, _alpha, super.paint, oldLayer: layer as OpacityLayer?);
902+
assert(() {
903+
layer!.debugCreator = debugCreator;
904+
return true;
905+
}());
902906
}
903907
}
904908

@@ -1006,6 +1010,10 @@ mixin RenderAnimatedOpacityMixin<T extends RenderObject> on RenderObjectWithChil
10061010
}
10071011
assert(needsCompositing);
10081012
layer = context.pushOpacity(offset, _alpha!, super.paint, oldLayer: layer as OpacityLayer?);
1013+
assert(() {
1014+
layer!.debugCreator = debugCreator;
1015+
return true;
1016+
}());
10091017
}
10101018
}
10111019

@@ -1115,6 +1123,10 @@ class RenderShaderMask extends RenderProxyBox {
11151123
..maskRect = offset & size
11161124
..blendMode = _blendMode;
11171125
context.pushLayer(layer!, super.paint, offset);
1126+
assert(() {
1127+
layer!.debugCreator = debugCreator;
1128+
return true;
1129+
}());
11181130
} else {
11191131
layer = null;
11201132
}
@@ -1181,6 +1193,10 @@ class RenderBackdropFilter extends RenderProxyBox {
11811193
layer!.filter = _filter;
11821194
layer!.blendMode = _blendMode;
11831195
context.pushLayer(layer!, super.paint, offset);
1196+
assert(() {
1197+
layer!.debugCreator = debugCreator;
1198+
return true;
1199+
}());
11841200
} else {
11851201
layer = null;
11861202
}
@@ -2426,6 +2442,10 @@ class RenderTransform extends RenderProxyBox {
24262442
layer = ImageFilterLayer(imageFilter: filter);
24272443
}
24282444
context.pushLayer(layer!, super.paint, offset);
2445+
assert(() {
2446+
layer!.debugCreator = debugCreator;
2447+
return true;
2448+
}());
24292449
}
24302450
}
24312451
}
@@ -5212,7 +5232,10 @@ class RenderLeaderLayer extends RenderProxyBox {
52125232
..offset = offset;
52135233
}
52145234
context.pushLayer(layer!, super.paint, Offset.zero);
5215-
assert(layer != null);
5235+
assert(() {
5236+
layer!.debugCreator = debugCreator;
5237+
return true;
5238+
}());
52165239
}
52175240

52185241
@override
@@ -5424,6 +5447,10 @@ class RenderFollowerLayer extends RenderProxyBox {
54245447
double.infinity,
54255448
),
54265449
);
5450+
assert(() {
5451+
layer!.debugCreator = debugCreator;
5452+
return true;
5453+
}());
54275454
}
54285455

54295456
@override

packages/flutter/lib/src/rendering/proxy_sliver.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,10 @@ class RenderSliverOpacity extends RenderProxySliver {
173173
super.paint,
174174
oldLayer: layer as OpacityLayer?,
175175
);
176+
assert(() {
177+
layer!.debugCreator = debugCreator;
178+
return true;
179+
}());
176180
}
177181
}
178182

packages/flutter/lib/src/widgets/color_filter.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,9 @@ class _ColorFilterRenderObject extends RenderProxyBox {
7474
@override
7575
void paint(PaintingContext context, Offset offset) {
7676
layer = context.pushColorFilter(offset, colorFilter, super.paint, oldLayer: layer as ColorFilterLayer?);
77+
assert(() {
78+
layer!.debugCreator = debugCreator;
79+
return true;
80+
}());
7781
}
7882
}

packages/flutter/lib/src/widgets/image_filter.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ class _ImageFilterRenderObject extends RenderProxyBox {
7373
filterLayer.imageFilter = imageFilter;
7474
}
7575
context.pushLayer(layer!, super.paint, offset);
76-
assert(layer != null);
76+
assert(() {
77+
layer!.debugCreator = debugCreator;
78+
return true;
79+
}());
7780
}
7881
}

packages/flutter/test/widgets/debug_test.dart

Lines changed: 73 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
import 'dart:ui';
6+
57
import 'package:flutter/foundation.dart';
6-
import 'package:flutter/widgets.dart';
8+
import 'package:flutter/material.dart';
79
import 'package:flutter_test/flutter_test.dart';
810

911
void main() {
@@ -269,4 +271,74 @@ void main() {
269271
}
270272
debugHighlightDeprecatedWidgets = false;
271273
});
274+
275+
testWidgets('debugCreator of layers should not be null', (WidgetTester tester) async {
276+
await tester.pumpWidget(
277+
MaterialApp(
278+
home: Directionality(
279+
textDirection: TextDirection.ltr,
280+
child: Material(
281+
child: Stack(
282+
children: <Widget>[
283+
const ColorFiltered(
284+
colorFilter: ColorFilter.mode(Color(0xFFFF0000), BlendMode.color),
285+
child: Placeholder(),
286+
),
287+
const Opacity(
288+
opacity: 1.0,
289+
child: Placeholder(),
290+
),
291+
ImageFiltered(
292+
imageFilter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0),
293+
child: const Placeholder(),
294+
),
295+
BackdropFilter(
296+
filter: ImageFilter.blur(sigmaX: 10.0, sigmaY: 10.0),
297+
child: const Placeholder(),
298+
),
299+
ShaderMask(
300+
shaderCallback: (Rect bounds) => const RadialGradient(
301+
radius: 0.05,
302+
colors: <Color>[Color(0xFFFF0000), Color(0xFF00FF00)],
303+
tileMode: TileMode.mirror,
304+
).createShader(bounds),
305+
child: const Placeholder(),
306+
),
307+
RangeSlider(
308+
values: const RangeValues(0.3, 0.7),
309+
onChanged: (RangeValues newValues) {},
310+
),
311+
CompositedTransformFollower(
312+
link: LayerLink(),
313+
),
314+
],
315+
),
316+
),
317+
),
318+
),
319+
);
320+
321+
RenderObject renderObject;
322+
323+
renderObject = tester.firstRenderObject(find.byType(Opacity));
324+
expect(renderObject.debugLayer?.debugCreator, isNotNull);
325+
326+
renderObject = tester.firstRenderObject(find.byType(ColorFiltered));
327+
expect(renderObject.debugLayer?.debugCreator, isNotNull);
328+
329+
renderObject = tester.firstRenderObject(find.byType(ImageFiltered));
330+
expect(renderObject.debugLayer?.debugCreator, isNotNull);
331+
332+
renderObject = tester.firstRenderObject(find.byType(BackdropFilter));
333+
expect(renderObject.debugLayer?.debugCreator, isNotNull);
334+
335+
renderObject = tester.firstRenderObject(find.byType(ShaderMask));
336+
expect(renderObject.debugLayer?.debugCreator, isNotNull);
337+
338+
renderObject = tester.firstRenderObject(find.byType(RangeSlider));
339+
expect(renderObject.debugLayer?.debugCreator, isNotNull);
340+
341+
renderObject = tester.firstRenderObject(find.byType(CompositedTransformFollower));
342+
expect(renderObject.debugLayer?.debugCreator, isNotNull);
343+
});
272344
}

0 commit comments

Comments
 (0)