Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
99ac6b81
Unverified
Commit
99ac6b81
authored
Sep 22, 2023
by
Polina Cherkasova
Committed by
GitHub
Sep 22, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
_RenderChip should not create OpacityLayer without disposing. (#134708)
parent
9fe6ed15
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
12 additions
and
7 deletions
+12
-7
chip.dart
packages/flutter/lib/src/material/chip.dart
+11
-1
chip_test.dart
packages/flutter/test/material/chip_test.dart
+1
-6
No files found.
packages/flutter/lib/src/material/chip.dart
View file @
99ac6b81
...
...
@@ -2034,6 +2034,8 @@ class _RenderChip extends RenderBox with SlottedContainerRenderObjectMixin<_Chip
}
}
final
LayerHandle
<
OpacityLayer
>
_avatarOpacityLayerHandler
=
LayerHandle
<
OpacityLayer
>();
void
_paintAvatar
(
PaintingContext
context
,
Offset
offset
)
{
void
paintWithOverlay
(
PaintingContext
context
,
Offset
offset
)
{
context
.
paintChild
(
avatar
!,
_boxParentData
(
avatar
!).
offset
+
offset
);
...
...
@@ -2041,13 +2043,15 @@ class _RenderChip extends RenderBox with SlottedContainerRenderObjectMixin<_Chip
}
if
(!
theme
.
showAvatar
&&
avatarDrawerAnimation
.
isDismissed
)
{
_avatarOpacityLayerHandler
.
layer
=
null
;
return
;
}
final
Color
disabledColor
=
_disabledColor
;
final
int
disabledColorAlpha
=
disabledColor
.
alpha
;
if
(
needsCompositing
)
{
context
.
pushLayer
(
OpacityLayer
(
alpha:
disabledColorAlpha
),
paintWithOverlay
,
offset
);
_avatarOpacityLayerHandler
.
layer
=
context
.
pushOpacity
(
offset
,
disabledColorAlpha
,
paintWithOverlay
,
oldLayer:
_avatarOpacityLayerHandler
.
layer
);
}
else
{
_avatarOpacityLayerHandler
.
layer
=
null
;
if
(
disabledColorAlpha
!=
0xff
)
{
context
.
canvas
.
saveLayer
(
_boxRect
(
avatar
).
shift
(
offset
).
inflate
(
20.0
),
...
...
@@ -2086,6 +2090,12 @@ class _RenderChip extends RenderBox with SlottedContainerRenderObjectMixin<_Chip
}
}
@override
void
dispose
()
{
_avatarOpacityLayerHandler
.
layer
=
null
;
super
.
dispose
();
}
@override
void
paint
(
PaintingContext
context
,
Offset
offset
)
{
_paintAvatar
(
context
,
offset
);
...
...
packages/flutter/test/material/chip_test.dart
View file @
99ac6b81
...
...
@@ -290,12 +290,7 @@ void main() {
expect
(
labelStyle
.
overflow
,
textTheme
.
bodyLarge
?.
overflow
);
expect
(
labelStyle
.
textBaseline
,
textTheme
.
bodyLarge
?.
textBaseline
);
expect
(
labelStyle
.
wordSpacing
,
textTheme
.
bodyLarge
?.
wordSpacing
);
},
// TODO(polina-c): remove after fixing
// https://github.com/flutter/flutter/issues/134394
leakTrackingTestConfig:
const
LeakTrackingTestConfig
(
notDisposedAllowList:
<
String
,
int
?>{
'OpacityLayer'
:
2
},
));
});
testWidgetsWithLeakTracking
(
'M3 Chip defaults'
,
(
WidgetTester
tester
)
async
{
late
TextTheme
textTheme
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment