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
44f54033
Unverified
Commit
44f54033
authored
Jan 12, 2023
by
Taha Tesser
Committed by
GitHub
Jan 12, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix `SliverAppBar.large` and `SliverAppBar.medium` do not use `foregroundColor` (#118322)
parent
f8628b5c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
81 additions
and
6 deletions
+81
-6
app_bar.dart
packages/flutter/lib/src/material/app_bar.dart
+9
-6
app_bar_theme_test.dart
packages/flutter/test/material/app_bar_theme_test.dart
+72
-0
No files found.
packages/flutter/lib/src/material/app_bar.dart
View file @
44f54033
...
...
@@ -1652,6 +1652,7 @@ class SliverAppBar extends StatefulWidget {
actions:
actions
,
flexibleSpace:
flexibleSpace
??
_ScrollUnderFlexibleSpace
(
title:
title
,
foregroundColor:
foregroundColor
,
variant:
_ScrollUnderFlexibleVariant
.
medium
,
centerCollapsedTitle:
centerTitle
,
primary:
primary
,
...
...
@@ -1753,6 +1754,7 @@ class SliverAppBar extends StatefulWidget {
actions:
actions
,
flexibleSpace:
flexibleSpace
??
_ScrollUnderFlexibleSpace
(
title:
title
,
foregroundColor:
foregroundColor
,
variant:
_ScrollUnderFlexibleVariant
.
large
,
centerCollapsedTitle:
centerTitle
,
primary:
primary
,
...
...
@@ -2227,12 +2229,14 @@ enum _ScrollUnderFlexibleVariant { medium, large }
class
_ScrollUnderFlexibleSpace
extends
StatelessWidget
{
const
_ScrollUnderFlexibleSpace
({
this
.
title
,
this
.
foregroundColor
,
required
this
.
variant
,
this
.
centerCollapsedTitle
,
this
.
primary
=
true
,
});
final
Widget
?
title
;
final
Color
?
foregroundColor
;
final
_ScrollUnderFlexibleVariant
variant
;
final
bool
?
centerCollapsedTitle
;
final
bool
primary
;
...
...
@@ -2240,6 +2244,7 @@ class _ScrollUnderFlexibleSpace extends StatelessWidget {
@override
Widget
build
(
BuildContext
context
)
{
late
final
ThemeData
theme
=
Theme
.
of
(
context
);
late
final
AppBarTheme
appBarTheme
=
AppBarTheme
.
of
(
context
);
final
FlexibleSpaceBarSettings
settings
=
context
.
dependOnInheritedWidgetOfExactType
<
FlexibleSpaceBarSettings
>()!;
final
double
topPadding
=
primary
?
MediaQuery
.
viewPaddingOf
(
context
).
top
:
0
;
final
double
collapsedHeight
=
settings
.
minExtent
-
topPadding
;
...
...
@@ -2259,13 +2264,13 @@ class _ScrollUnderFlexibleSpace extends StatelessWidget {
if
(
title
!=
null
)
{
collapsedTitle
=
config
.
collapsedTextStyle
!=
null
?
DefaultTextStyle
(
style:
config
.
collapsedTextStyle
!,
style:
config
.
collapsedTextStyle
!
.
copyWith
(
color:
foregroundColor
??
appBarTheme
.
foregroundColor
)
,
child:
title
!,
)
:
title
;
expandedTitle
=
config
.
expandedTextStyle
!=
null
?
DefaultTextStyle
(
style:
config
.
expandedTextStyle
!,
style:
config
.
expandedTextStyle
!
.
copyWith
(
color:
foregroundColor
??
appBarTheme
.
foregroundColor
)
,
child:
title
!,
)
:
title
;
...
...
@@ -2286,9 +2291,7 @@ class _ScrollUnderFlexibleSpace extends StatelessWidget {
return
true
;
}
}
centerTitle
=
centerCollapsedTitle
??
theme
.
appBarTheme
.
centerTitle
??
platformCenter
();
centerTitle
=
centerCollapsedTitle
??
appBarTheme
.
centerTitle
??
platformCenter
();
}
final
bool
isCollapsed
=
settings
.
isScrolledUnder
??
false
;
...
...
@@ -2307,7 +2310,7 @@ class _ScrollUnderFlexibleSpace extends StatelessWidget {
alignment:
centerTitle
?
Alignment
.
center
:
AlignmentDirectional
.
centerStart
,
child:
collapsedTitle
child:
collapsedTitle
,
),
),
),
...
...
packages/flutter/test/material/app_bar_theme_test.dart
View file @
44f54033
...
...
@@ -574,6 +574,78 @@ void main() {
expect
(
navToolbar
.
middleSpacing
,
40
);
});
testWidgets
(
"SliverAppBar.medium's title uses AppBarTheme.foregroundColor"
,
(
WidgetTester
tester
)
async
{
const
Color
foregroundColor
=
Color
(
0xff00ff00
);
await
tester
.
pumpWidget
(
MaterialApp
(
theme:
ThemeData
(
appBarTheme:
const
AppBarTheme
(
foregroundColor:
foregroundColor
)),
home:
CustomScrollView
(
slivers:
<
Widget
>[
SliverAppBar
.
medium
(
title:
const
Text
(
'Medium Title'
),
),
],
),
));
final
RichText
text
=
tester
.
firstWidget
(
find
.
byType
(
RichText
));
expect
(
text
.
text
.
style
!.
color
,
foregroundColor
);
});
testWidgets
(
"SliverAppBar.medium's foregroundColor takes priority over AppBarTheme.foregroundColor"
,
(
WidgetTester
tester
)
async
{
const
Color
foregroundColor
=
Color
(
0xff00ff00
);
await
tester
.
pumpWidget
(
MaterialApp
(
theme:
ThemeData
(
appBarTheme:
const
AppBarTheme
(
foregroundColor:
Color
(
0xffff0000
))),
home:
CustomScrollView
(
slivers:
<
Widget
>[
SliverAppBar
.
medium
(
foregroundColor:
foregroundColor
,
title:
const
Text
(
'Medium Title'
),
),
],
),
));
final
RichText
text
=
tester
.
firstWidget
(
find
.
byType
(
RichText
));
expect
(
text
.
text
.
style
!.
color
,
foregroundColor
);
});
testWidgets
(
"SliverAppBar.large's title uses AppBarTheme.foregroundColor"
,
(
WidgetTester
tester
)
async
{
const
Color
foregroundColor
=
Color
(
0xff00ff00
);
await
tester
.
pumpWidget
(
MaterialApp
(
theme:
ThemeData
(
appBarTheme:
const
AppBarTheme
(
foregroundColor:
foregroundColor
)),
home:
CustomScrollView
(
slivers:
<
Widget
>[
SliverAppBar
.
large
(
title:
const
Text
(
'Large Title'
),
),
],
),
));
final
RichText
text
=
tester
.
firstWidget
(
find
.
byType
(
RichText
));
expect
(
text
.
text
.
style
!.
color
,
foregroundColor
);
});
testWidgets
(
"SliverAppBar.large's foregroundColor takes priority over AppBarTheme.foregroundColor"
,
(
WidgetTester
tester
)
async
{
const
Color
foregroundColor
=
Color
(
0xff00ff00
);
await
tester
.
pumpWidget
(
MaterialApp
(
theme:
ThemeData
(
appBarTheme:
const
AppBarTheme
(
foregroundColor:
Color
(
0xffff0000
))),
home:
CustomScrollView
(
slivers:
<
Widget
>[
SliverAppBar
.
large
(
foregroundColor:
foregroundColor
,
title:
const
Text
(
'Large Title'
),
),
],
),
));
final
RichText
text
=
tester
.
firstWidget
(
find
.
byType
(
RichText
));
expect
(
text
.
text
.
style
!.
color
,
foregroundColor
);
});
testWidgets
(
'Default AppBarTheme debugFillProperties'
,
(
WidgetTester
tester
)
async
{
final
DiagnosticPropertiesBuilder
builder
=
DiagnosticPropertiesBuilder
();
const
AppBarTheme
().
debugFillProperties
(
builder
);
...
...
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