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
5180e450
Unverified
Commit
5180e450
authored
Mar 16, 2023
by
Qun Cheng
Committed by
GitHub
Mar 16, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Create `SearchBar` and `SearchBarTheme` (#122309)
parent
7e151b46
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1811 additions
and
0 deletions
+1811
-0
gen_defaults.dart
dev/tools/gen_defaults/bin/gen_defaults.dart
+4
-0
search_bar_template.dart
dev/tools/gen_defaults/lib/search_bar_template.dart
+76
-0
template.dart
dev/tools/gen_defaults/lib/template.dart
+11
-0
material.dart
packages/flutter/lib/material.dart
+2
-0
search_anchor.dart
packages/flutter/lib/src/material/search_anchor.dart
+379
-0
search_bar_theme.dart
packages/flutter/lib/src/material/search_bar_theme.dart
+262
-0
theme_data.dart
packages/flutter/lib/src/material/theme_data.dart
+14
-0
search_anchor_test.dart
packages/flutter/test/material/search_anchor_test.dart
+781
-0
search_bar_theme_test.dart
packages/flutter/test/material/search_bar_theme_test.dart
+277
-0
theme_data_test.dart
packages/flutter/test/material/theme_data_test.dart
+5
-0
No files found.
dev/tools/gen_defaults/bin/gen_defaults.dart
View file @
5180e450
...
...
@@ -45,6 +45,7 @@ import 'package:gen_defaults/navigation_rail_template.dart';
import
'package:gen_defaults/popup_menu_template.dart'
;
import
'package:gen_defaults/progress_indicator_template.dart'
;
import
'package:gen_defaults/radio_template.dart'
;
import
'package:gen_defaults/search_bar_template.dart'
;
import
'package:gen_defaults/segmented_button_template.dart'
;
import
'package:gen_defaults/slider_template.dart'
;
import
'package:gen_defaults/snackbar_template.dart'
;
...
...
@@ -107,6 +108,8 @@ Future<void> main(List<String> args) async {
'progress_indicator_circular.json'
,
'progress_indicator_linear.json'
,
'radio_button.json'
,
'search_bar.json'
,
'search_view.json'
,
'segmented_button_outlined.json'
,
'shape.json'
,
'sheet_bottom.json'
,
...
...
@@ -173,6 +176,7 @@ Future<void> main(List<String> args) async {
PopupMenuTemplate
(
'PopupMenu'
,
'
$materialLib
/popup_menu.dart'
,
tokens
).
updateFile
();
ProgressIndicatorTemplate
(
'ProgressIndicator'
,
'
$materialLib
/progress_indicator.dart'
,
tokens
).
updateFile
();
RadioTemplate
(
'Radio<T>'
,
'
$materialLib
/radio.dart'
,
tokens
).
updateFile
();
SearchBarTemplate
(
'SearchBar'
,
'
$materialLib
/search_anchor.dart'
,
tokens
).
updateFile
();
SegmentedButtonTemplate
(
'md.comp.outlined-segmented-button'
,
'SegmentedButton'
,
'
$materialLib
/segmented_button.dart'
,
tokens
).
updateFile
();
SnackbarTemplate
(
'md.comp.snackbar'
,
'Snackbar'
,
'
$materialLib
/snack_bar.dart'
,
tokens
).
updateFile
();
SliderTemplate
(
'md.comp.slider'
,
'Slider'
,
'
$materialLib
/slider.dart'
,
tokens
).
updateFile
();
...
...
dev/tools/gen_defaults/lib/search_bar_template.dart
0 → 100644
View file @
5180e450
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import
'template.dart'
;
class
SearchBarTemplate
extends
TokenTemplate
{
const
SearchBarTemplate
(
super
.
blockName
,
super
.
fileName
,
super
.
tokens
,
{
super
.
colorSchemePrefix
=
'_colors.'
,
super
.
textThemePrefix
=
'_textTheme.'
});
@override
String
generate
()
=>
'''
class _SearchBarDefaultsM3 extends SearchBarThemeData {
_SearchBarDefaultsM3(this.context);
final BuildContext context;
late final ColorScheme _colors = Theme.of(context).colorScheme;
late final TextTheme _textTheme = Theme.of(context).textTheme;
@override
MaterialStateProperty<Color?>? get backgroundColor =>
MaterialStatePropertyAll<Color>(
${componentColor("md.comp.search-bar.container")}
);
@override
MaterialStateProperty<double>? get elevation =>
const MaterialStatePropertyAll<double>(
${elevation("md.comp.search-bar.container")}
);
@override
MaterialStateProperty<Color>? get shadowColor =>
MaterialStatePropertyAll<Color>(_colors.shadow);
@override
MaterialStateProperty<Color>? get surfaceTintColor =>
MaterialStatePropertyAll<Color>(
${colorOrTransparent("md.comp.search-bar.container.surface-tint-layer.color")}
);
@override
MaterialStateProperty<Color?>? get overlayColor =>
MaterialStateProperty.resolveWith((Set<MaterialState> states) {
if (states.contains(MaterialState.pressed)) {
return
${componentColor("md.comp.search-bar.pressed.state-layer")}
;
}
if (states.contains(MaterialState.hovered)) {
return
${componentColor("md.comp.search-bar.hover.state-layer")}
;
}
if (states.contains(MaterialState.focused)) {
return
${colorOrTransparent("md.comp.search-bar.focused.state-layer")}
;
}
return Colors.transparent;
});
// No default side
@override
MaterialStateProperty<OutlinedBorder>? get shape =>
const MaterialStatePropertyAll<OutlinedBorder>(
${shape('md.comp.search-bar.container', '')}
);
@override
MaterialStateProperty<EdgeInsetsGeometry>? get padding =>
const MaterialStatePropertyAll<EdgeInsetsGeometry>(EdgeInsets.symmetric(horizontal: 8.0));
@override
MaterialStateProperty<TextStyle?> get textStyle =>
MaterialStatePropertyAll<TextStyle?>(
${textStyleWithColor('md.comp.search-bar.input-text')}
);
@override
MaterialStateProperty<TextStyle?> get hintStyle =>
MaterialStatePropertyAll<TextStyle?>(
${textStyleWithColor('md.comp.search-bar.supporting-text')}
);
@override
BoxConstraints get constraints =>
const BoxConstraints(minWidth: 360.0, maxWidth: 800.0, minHeight:
${tokens['md.comp.search-bar.container.height']}
);
}
'''
;
}
dev/tools/gen_defaults/lib/template.dart
View file @
5180e450
...
...
@@ -236,4 +236,15 @@ abstract class TokenTemplate {
String
textStyle
(
String
componentToken
)
{
return
'
$textThemePrefix${tokens["$componentToken.text-style"]}
'
;
}
String
textStyleWithColor
(
String
componentToken
)
{
if
(!
tokens
.
containsKey
(
'
$componentToken
.text-style'
))
{
return
'null'
;
}
String
style
=
textStyle
(
componentToken
);
if
(
tokens
.
containsKey
(
'
$componentToken
.color'
))
{
style
=
'
$style
?.copyWith(color:
${componentColor(componentToken)}
)'
;
}
return
style
;
}
}
packages/flutter/lib/material.dart
View file @
5180e450
...
...
@@ -152,6 +152,8 @@ export 'src/material/scaffold.dart';
export
'src/material/scrollbar.dart'
;
export
'src/material/scrollbar_theme.dart'
;
export
'src/material/search.dart'
;
export
'src/material/search_anchor.dart'
;
export
'src/material/search_bar_theme.dart'
;
export
'src/material/segmented_button.dart'
;
export
'src/material/segmented_button_theme.dart'
;
export
'src/material/selectable_text.dart'
;
...
...
packages/flutter/lib/src/material/search_anchor.dart
0 → 100644
View file @
5180e450
This diff is collapsed.
Click to expand it.
packages/flutter/lib/src/material/search_bar_theme.dart
0 → 100644
View file @
5180e450
This diff is collapsed.
Click to expand it.
packages/flutter/lib/src/material/theme_data.dart
View file @
5180e450
...
...
@@ -53,6 +53,7 @@ import 'popup_menu_theme.dart';
import
'progress_indicator_theme.dart'
;
import
'radio_theme.dart'
;
import
'scrollbar_theme.dart'
;
import
'search_bar_theme.dart'
;
import
'segmented_button_theme.dart'
;
import
'slider_theme.dart'
;
import
'snack_bar_theme.dart'
;
...
...
@@ -373,6 +374,7 @@ class ThemeData with Diagnosticable {
PopupMenuThemeData
?
popupMenuTheme
,
ProgressIndicatorThemeData
?
progressIndicatorTheme
,
RadioThemeData
?
radioTheme
,
SearchBarThemeData
?
searchBarTheme
,
SegmentedButtonThemeData
?
segmentedButtonTheme
,
SliderThemeData
?
sliderTheme
,
SnackBarThemeData
?
snackBarTheme
,
...
...
@@ -589,6 +591,7 @@ class ThemeData with Diagnosticable {
popupMenuTheme
??=
const
PopupMenuThemeData
();
progressIndicatorTheme
??=
const
ProgressIndicatorThemeData
();
radioTheme
??=
const
RadioThemeData
();
searchBarTheme
??=
const
SearchBarThemeData
();
segmentedButtonTheme
??=
const
SegmentedButtonThemeData
();
sliderTheme
??=
const
SliderThemeData
();
snackBarTheme
??=
const
SnackBarThemeData
();
...
...
@@ -686,6 +689,7 @@ class ThemeData with Diagnosticable {
popupMenuTheme:
popupMenuTheme
,
progressIndicatorTheme:
progressIndicatorTheme
,
radioTheme:
radioTheme
,
searchBarTheme:
searchBarTheme
,
segmentedButtonTheme:
segmentedButtonTheme
,
sliderTheme:
sliderTheme
,
snackBarTheme:
snackBarTheme
,
...
...
@@ -797,6 +801,7 @@ class ThemeData with Diagnosticable {
required
this
.
popupMenuTheme
,
required
this
.
progressIndicatorTheme
,
required
this
.
radioTheme
,
required
this
.
searchBarTheme
,
required
this
.
segmentedButtonTheme
,
required
this
.
sliderTheme
,
required
this
.
snackBarTheme
,
...
...
@@ -1486,6 +1491,9 @@ class ThemeData with Diagnosticable {
/// A theme for customizing the appearance and layout of [Radio] widgets.
final
RadioThemeData
radioTheme
;
/// A theme for customizing the appearance and layout of [SearchBar] widgets.
final
SearchBarThemeData
searchBarTheme
;
/// A theme for customizing the appearance and layout of [SegmentedButton] widgets.
final
SegmentedButtonThemeData
segmentedButtonTheme
;
...
...
@@ -1697,6 +1705,7 @@ class ThemeData with Diagnosticable {
PopupMenuThemeData
?
popupMenuTheme
,
ProgressIndicatorThemeData
?
progressIndicatorTheme
,
RadioThemeData
?
radioTheme
,
SearchBarThemeData
?
searchBarTheme
,
SegmentedButtonThemeData
?
segmentedButtonTheme
,
SliderThemeData
?
sliderTheme
,
SnackBarThemeData
?
snackBarTheme
,
...
...
@@ -1831,6 +1840,7 @@ class ThemeData with Diagnosticable {
popupMenuTheme:
popupMenuTheme
??
this
.
popupMenuTheme
,
progressIndicatorTheme:
progressIndicatorTheme
??
this
.
progressIndicatorTheme
,
radioTheme:
radioTheme
??
this
.
radioTheme
,
searchBarTheme:
searchBarTheme
??
this
.
searchBarTheme
,
segmentedButtonTheme:
segmentedButtonTheme
??
this
.
segmentedButtonTheme
,
sliderTheme:
sliderTheme
??
this
.
sliderTheme
,
snackBarTheme:
snackBarTheme
??
this
.
snackBarTheme
,
...
...
@@ -2025,6 +2035,7 @@ class ThemeData with Diagnosticable {
popupMenuTheme:
PopupMenuThemeData
.
lerp
(
a
.
popupMenuTheme
,
b
.
popupMenuTheme
,
t
)!,
progressIndicatorTheme:
ProgressIndicatorThemeData
.
lerp
(
a
.
progressIndicatorTheme
,
b
.
progressIndicatorTheme
,
t
)!,
radioTheme:
RadioThemeData
.
lerp
(
a
.
radioTheme
,
b
.
radioTheme
,
t
),
searchBarTheme:
SearchBarThemeData
.
lerp
(
a
.
searchBarTheme
,
b
.
searchBarTheme
,
t
)!,
segmentedButtonTheme:
SegmentedButtonThemeData
.
lerp
(
a
.
segmentedButtonTheme
,
b
.
segmentedButtonTheme
,
t
),
sliderTheme:
SliderThemeData
.
lerp
(
a
.
sliderTheme
,
b
.
sliderTheme
,
t
),
snackBarTheme:
SnackBarThemeData
.
lerp
(
a
.
snackBarTheme
,
b
.
snackBarTheme
,
t
),
...
...
@@ -2131,6 +2142,7 @@ class ThemeData with Diagnosticable {
other
.
popupMenuTheme
==
popupMenuTheme
&&
other
.
progressIndicatorTheme
==
progressIndicatorTheme
&&
other
.
radioTheme
==
radioTheme
&&
other
.
searchBarTheme
==
searchBarTheme
&&
other
.
segmentedButtonTheme
==
segmentedButtonTheme
&&
other
.
sliderTheme
==
sliderTheme
&&
other
.
snackBarTheme
==
snackBarTheme
&&
...
...
@@ -2234,6 +2246,7 @@ class ThemeData with Diagnosticable {
popupMenuTheme
,
progressIndicatorTheme
,
radioTheme
,
searchBarTheme
,
segmentedButtonTheme
,
sliderTheme
,
snackBarTheme
,
...
...
@@ -2339,6 +2352,7 @@ class ThemeData with Diagnosticable {
properties
.
add
(
DiagnosticsProperty
<
PopupMenuThemeData
>(
'popupMenuTheme'
,
popupMenuTheme
,
defaultValue:
defaultData
.
popupMenuTheme
,
level:
DiagnosticLevel
.
debug
));
properties
.
add
(
DiagnosticsProperty
<
ProgressIndicatorThemeData
>(
'progressIndicatorTheme'
,
progressIndicatorTheme
,
defaultValue:
defaultData
.
progressIndicatorTheme
,
level:
DiagnosticLevel
.
debug
));
properties
.
add
(
DiagnosticsProperty
<
RadioThemeData
>(
'radioTheme'
,
radioTheme
,
defaultValue:
defaultData
.
radioTheme
,
level:
DiagnosticLevel
.
debug
));
properties
.
add
(
DiagnosticsProperty
<
SearchBarThemeData
>(
'searchBarTheme'
,
searchBarTheme
,
defaultValue:
defaultData
.
searchBarTheme
,
level:
DiagnosticLevel
.
debug
));
properties
.
add
(
DiagnosticsProperty
<
SegmentedButtonThemeData
>(
'segmentedButtonTheme'
,
segmentedButtonTheme
,
defaultValue:
defaultData
.
segmentedButtonTheme
,
level:
DiagnosticLevel
.
debug
));
properties
.
add
(
DiagnosticsProperty
<
SliderThemeData
>(
'sliderTheme'
,
sliderTheme
,
level:
DiagnosticLevel
.
debug
));
properties
.
add
(
DiagnosticsProperty
<
SnackBarThemeData
>(
'snackBarTheme'
,
snackBarTheme
,
defaultValue:
defaultData
.
snackBarTheme
,
level:
DiagnosticLevel
.
debug
));
...
...
packages/flutter/test/material/search_anchor_test.dart
0 → 100644
View file @
5180e450
This diff is collapsed.
Click to expand it.
packages/flutter/test/material/search_bar_theme_test.dart
0 → 100644
View file @
5180e450
This diff is collapsed.
Click to expand it.
packages/flutter/test/material/theme_data_test.dart
View file @
5180e450
...
...
@@ -791,6 +791,7 @@ void main() {
popupMenuTheme:
const
PopupMenuThemeData
(
color:
Colors
.
black
),
progressIndicatorTheme:
const
ProgressIndicatorThemeData
(),
radioTheme:
const
RadioThemeData
(),
searchBarTheme:
const
SearchBarThemeData
(),
segmentedButtonTheme:
const
SegmentedButtonThemeData
(),
sliderTheme:
sliderTheme
,
snackBarTheme:
const
SnackBarThemeData
(
backgroundColor:
Colors
.
black
),
...
...
@@ -909,6 +910,7 @@ void main() {
popupMenuTheme:
const
PopupMenuThemeData
(
color:
Colors
.
white
),
progressIndicatorTheme:
const
ProgressIndicatorThemeData
(),
radioTheme:
const
RadioThemeData
(),
searchBarTheme:
const
SearchBarThemeData
(),
segmentedButtonTheme:
const
SegmentedButtonThemeData
(),
sliderTheme:
otherSliderTheme
,
snackBarTheme:
const
SnackBarThemeData
(
backgroundColor:
Colors
.
white
),
...
...
@@ -1012,6 +1014,7 @@ void main() {
popupMenuTheme:
otherTheme
.
popupMenuTheme
,
progressIndicatorTheme:
otherTheme
.
progressIndicatorTheme
,
radioTheme:
otherTheme
.
radioTheme
,
searchBarTheme:
otherTheme
.
searchBarTheme
,
sliderTheme:
otherTheme
.
sliderTheme
,
snackBarTheme:
otherTheme
.
snackBarTheme
,
switchTheme:
otherTheme
.
switchTheme
,
...
...
@@ -1112,6 +1115,7 @@ void main() {
expect
(
themeDataCopy
.
popupMenuTheme
,
equals
(
otherTheme
.
popupMenuTheme
));
expect
(
themeDataCopy
.
progressIndicatorTheme
,
equals
(
otherTheme
.
progressIndicatorTheme
));
expect
(
themeDataCopy
.
radioTheme
,
equals
(
otherTheme
.
radioTheme
));
expect
(
themeDataCopy
.
searchBarTheme
,
equals
(
otherTheme
.
searchBarTheme
));
expect
(
themeDataCopy
.
sliderTheme
,
equals
(
otherTheme
.
sliderTheme
));
expect
(
themeDataCopy
.
snackBarTheme
,
equals
(
otherTheme
.
snackBarTheme
));
expect
(
themeDataCopy
.
switchTheme
,
equals
(
otherTheme
.
switchTheme
));
...
...
@@ -1249,6 +1253,7 @@ void main() {
'popupMenuTheme'
,
'progressIndicatorTheme'
,
'radioTheme'
,
'searchBarTheme'
,
'segmentedButtonTheme'
,
'sliderTheme'
,
'snackBarTheme'
,
...
...
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