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
38f318b4
Unverified
Commit
38f318b4
authored
Oct 23, 2023
by
Kostia Sokolovskyi
Committed by
GitHub
Oct 23, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cover last test/material tests with leak tracking. (#137004)
parent
abf20877
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
84 additions
and
48 deletions
+84
-48
input_date_picker_form_field_test.dart
...tter/test/material/input_date_picker_form_field_test.dart
+2
-1
search_test.dart
packages/flutter/test/material/search_test.dart
+68
-35
search_view_theme_test.dart
packages/flutter/test/material/search_view_theme_test.dart
+6
-6
time_picker_theme_test.dart
packages/flutter/test/material/time_picker_theme_test.dart
+4
-4
tooltip_test.dart
packages/flutter/test/material/tooltip_test.dart
+4
-2
No files found.
packages/flutter/test/material/input_date_picker_form_field_test.dart
View file @
38f318b4
...
@@ -381,8 +381,9 @@ void main() {
...
@@ -381,8 +381,9 @@ void main() {
});
});
});
});
testWidgets
(
'FocusNode can request focus'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'FocusNode can request focus'
,
(
WidgetTester
tester
)
async
{
final
FocusNode
focusNode
=
FocusNode
();
final
FocusNode
focusNode
=
FocusNode
();
addTearDown
(
focusNode
.
dispose
);
await
tester
.
pumpWidget
(
inputDatePickerField
(
await
tester
.
pumpWidget
(
inputDatePickerField
(
focusNode:
focusNode
,
focusNode:
focusNode
,
));
));
...
...
packages/flutter/test/material/search_test.dart
View file @
38f318b4
...
@@ -48,8 +48,9 @@ void main() {
...
@@ -48,8 +48,9 @@ void main() {
);
);
});
});
testWidgets
(
'Can open and close search'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Can open and close search'
,
(
WidgetTester
tester
)
async
{
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
final
List
<
String
>
selectedResults
=
<
String
>[];
final
List
<
String
>
selectedResults
=
<
String
>[];
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
...
@@ -84,10 +85,11 @@ void main() {
...
@@ -84,10 +85,11 @@ void main() {
expect
(
selectedResults
,
<
String
>[
'Result'
]);
expect
(
selectedResults
,
<
String
>[
'Result'
]);
});
});
testWidgets
(
'Can close search with system back button to return null'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Can close search with system back button to return null'
,
(
WidgetTester
tester
)
async
{
// regression test for https://github.com/flutter/flutter/issues/18145
// regression test for https://github.com/flutter/flutter/issues/18145
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
final
List
<
String
?>
selectedResults
=
<
String
?>[];
final
List
<
String
?>
selectedResults
=
<
String
?>[];
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
...
@@ -130,9 +132,10 @@ void main() {
...
@@ -130,9 +132,10 @@ void main() {
expect
(
find
.
text
(
'Suggestions'
),
findsOneWidget
);
expect
(
find
.
text
(
'Suggestions'
),
findsOneWidget
);
});
});
testWidgets
(
'Hint text color overridden'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Hint text color overridden'
,
(
WidgetTester
tester
)
async
{
const
String
searchHintText
=
'Enter search terms'
;
const
String
searchHintText
=
'Enter search terms'
;
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
searchHint:
searchHintText
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
searchHint:
searchHintText
);
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
...
@@ -144,8 +147,9 @@ void main() {
...
@@ -144,8 +147,9 @@ void main() {
expect
(
hintText
.
style
!.
color
,
_TestSearchDelegate
.
hintTextColor
);
expect
(
hintText
.
style
!.
color
,
_TestSearchDelegate
.
hintTextColor
);
});
});
testWidgets
(
'Requests suggestions'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Requests suggestions'
,
(
WidgetTester
tester
)
async
{
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
...
@@ -173,8 +177,9 @@ void main() {
...
@@ -173,8 +177,9 @@ void main() {
expect
(
delegate
.
queriesForResults
,
hasLength
(
0
));
expect
(
delegate
.
queriesForResults
,
hasLength
(
0
));
});
});
testWidgets
(
'Shows Results and closes search'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Shows Results and closes search'
,
(
WidgetTester
tester
)
async
{
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
final
List
<
String
>
selectedResults
=
<
String
>[];
final
List
<
String
>
selectedResults
=
<
String
>[];
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
...
@@ -209,8 +214,9 @@ void main() {
...
@@ -209,8 +214,9 @@ void main() {
expect
(
selectedResults
,
<
String
>[
'Result'
]);
expect
(
selectedResults
,
<
String
>[
'Result'
]);
});
});
testWidgets
(
'Can switch between results and suggestions'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Can switch between results and suggestions'
,
(
WidgetTester
tester
)
async
{
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
...
@@ -279,8 +285,9 @@ void main() {
...
@@ -279,8 +285,9 @@ void main() {
expect
(
textField
.
focusNode
!.
hasFocus
,
isFalse
);
expect
(
textField
.
focusNode
!.
hasFocus
,
isFalse
);
});
});
testWidgets
(
'Fresh search always starts with empty query'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Fresh search always starts with empty query'
,
(
WidgetTester
tester
)
async
{
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
...
@@ -299,8 +306,9 @@ void main() {
...
@@ -299,8 +306,9 @@ void main() {
expect
(
delegate
.
query
,
''
);
expect
(
delegate
.
query
,
''
);
});
});
testWidgets
(
'Initial queries are honored'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Initial queries are honored'
,
(
WidgetTester
tester
)
async
{
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
expect
(
delegate
.
query
,
''
);
expect
(
delegate
.
query
,
''
);
...
@@ -315,8 +323,9 @@ void main() {
...
@@ -315,8 +323,9 @@ void main() {
expect
(
delegate
.
query
,
'Foo'
);
expect
(
delegate
.
query
,
'Foo'
);
});
});
testWidgets
(
'Initial query null re-used previous query'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Initial query null re-used previous query'
,
(
WidgetTester
tester
)
async
{
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
delegate
.
query
=
'Foo'
;
delegate
.
query
=
'Foo'
;
...
@@ -330,8 +339,9 @@ void main() {
...
@@ -330,8 +339,9 @@ void main() {
expect
(
delegate
.
query
,
'Foo'
);
expect
(
delegate
.
query
,
'Foo'
);
});
});
testWidgets
(
'Changing query shows up in search field'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Changing query shows up in search field'
,
(
WidgetTester
tester
)
async
{
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
...
@@ -351,8 +361,9 @@ void main() {
...
@@ -351,8 +361,9 @@ void main() {
expect
(
find
.
text
(
'Bar'
),
findsOneWidget
);
expect
(
find
.
text
(
'Bar'
),
findsOneWidget
);
});
});
testWidgets
(
'transitionAnimation runs while search fades in/out'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'transitionAnimation runs while search fades in/out'
,
(
WidgetTester
tester
)
async
{
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
...
@@ -379,12 +390,13 @@ void main() {
...
@@ -379,12 +390,13 @@ void main() {
expect
(
delegate
.
transitionAnimation
.
status
,
AnimationStatus
.
dismissed
);
expect
(
delegate
.
transitionAnimation
.
status
,
AnimationStatus
.
dismissed
);
});
});
testWidgets
(
'Closing nested search returns to search'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Closing nested search returns to search'
,
(
WidgetTester
tester
)
async
{
final
List
<
String
?>
nestedSearchResults
=
<
String
?>[];
final
List
<
String
?>
nestedSearchResults
=
<
String
?>[];
final
_TestSearchDelegate
nestedSearchDelegate
=
_TestSearchDelegate
(
final
_TestSearchDelegate
nestedSearchDelegate
=
_TestSearchDelegate
(
suggestions:
'Nested Suggestions'
,
suggestions:
'Nested Suggestions'
,
result:
'Nested Result'
,
result:
'Nested Result'
,
);
);
addTearDown
(
nestedSearchDelegate
.
dispose
);
final
List
<
String
>
selectedResults
=
<
String
>[];
final
List
<
String
>
selectedResults
=
<
String
>[];
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
...
@@ -406,6 +418,7 @@ void main() {
...
@@ -406,6 +418,7 @@ void main() {
),
),
],
],
);
);
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
...
@@ -443,8 +456,9 @@ void main() {
...
@@ -443,8 +456,9 @@ void main() {
expect
(
selectedResults
,
<
String
>[
'Result'
]);
expect
(
selectedResults
,
<
String
>[
'Result'
]);
});
});
testWidgets
(
'Closing search with nested search shown goes back to underlying route'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Closing search with nested search shown goes back to underlying route'
,
(
WidgetTester
tester
)
async
{
late
_TestSearchDelegate
delegate
;
late
_TestSearchDelegate
delegate
;
addTearDown
(()
=>
delegate
.
dispose
());
final
List
<
String
?>
nestedSearchResults
=
<
String
?>[];
final
List
<
String
?>
nestedSearchResults
=
<
String
?>[];
final
_TestSearchDelegate
nestedSearchDelegate
=
_TestSearchDelegate
(
final
_TestSearchDelegate
nestedSearchDelegate
=
_TestSearchDelegate
(
suggestions:
'Nested Suggestions'
,
suggestions:
'Nested Suggestions'
,
...
@@ -463,6 +477,7 @@ void main() {
...
@@ -463,6 +477,7 @@ void main() {
),
),
],
],
);
);
addTearDown
(
nestedSearchDelegate
.
dispose
);
final
List
<
String
>
selectedResults
=
<
String
>[];
final
List
<
String
>
selectedResults
=
<
String
>[];
delegate
=
_TestSearchDelegate
(
delegate
=
_TestSearchDelegate
(
...
@@ -515,11 +530,12 @@ void main() {
...
@@ -515,11 +530,12 @@ void main() {
expect
(
selectedResults
,
<
String
>[
'Result Foo'
]);
expect
(
selectedResults
,
<
String
>[
'Result Foo'
]);
});
});
testWidgets
(
'Custom searchFieldLabel value'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Custom searchFieldLabel value'
,
(
WidgetTester
tester
)
async
{
const
String
searchHint
=
'custom search hint'
;
const
String
searchHint
=
'custom search hint'
;
final
String
defaultSearchHint
=
const
DefaultMaterialLocalizations
().
searchFieldLabel
;
final
String
defaultSearchHint
=
const
DefaultMaterialLocalizations
().
searchFieldLabel
;
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
searchHint:
searchHint
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
searchHint:
searchHint
);
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
...
@@ -531,10 +547,11 @@ void main() {
...
@@ -531,10 +547,11 @@ void main() {
expect
(
find
.
text
(
defaultSearchHint
),
findsNothing
);
expect
(
find
.
text
(
defaultSearchHint
),
findsNothing
);
});
});
testWidgets
(
'Default searchFieldLabel is used when it is set to null'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Default searchFieldLabel is used when it is set to null'
,
(
WidgetTester
tester
)
async
{
final
String
searchHint
=
const
DefaultMaterialLocalizations
().
searchFieldLabel
;
final
String
searchHint
=
const
DefaultMaterialLocalizations
().
searchFieldLabel
;
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
...
@@ -545,11 +562,12 @@ void main() {
...
@@ -545,11 +562,12 @@ void main() {
expect
(
find
.
text
(
searchHint
),
findsOneWidget
);
expect
(
find
.
text
(
searchHint
),
findsOneWidget
);
});
});
testWidgets
(
'Custom searchFieldStyle value'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Custom searchFieldStyle value'
,
(
WidgetTester
tester
)
async
{
const
String
searchHintText
=
'Enter search terms'
;
const
String
searchHintText
=
'Enter search terms'
;
const
TextStyle
searchFieldStyle
=
TextStyle
(
color:
Colors
.
red
,
fontSize:
3
);
const
TextStyle
searchFieldStyle
=
TextStyle
(
color:
Colors
.
red
,
fontSize:
3
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
searchHint:
searchHintText
,
searchFieldStyle:
searchFieldStyle
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
searchHint:
searchHintText
,
searchFieldStyle:
searchFieldStyle
);
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
));
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
));
await
tester
.
tap
(
find
.
byTooltip
(
'Search'
));
await
tester
.
tap
(
find
.
byTooltip
(
'Search'
));
...
@@ -565,8 +583,9 @@ void main() {
...
@@ -565,8 +583,9 @@ void main() {
});
});
testWidgets
(
'keyboard show search button by default'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'keyboard show search button by default'
,
(
WidgetTester
tester
)
async
{
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
...
@@ -579,8 +598,9 @@ void main() {
...
@@ -579,8 +598,9 @@ void main() {
expect
(
tester
.
testTextInput
.
setClientArgs
![
'inputAction'
],
TextInputAction
.
search
.
toString
());
expect
(
tester
.
testTextInput
.
setClientArgs
![
'inputAction'
],
TextInputAction
.
search
.
toString
());
});
});
testWidgets
(
'Custom textInputAction results in keyboard with corresponding button'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Custom textInputAction results in keyboard with corresponding button'
,
(
WidgetTester
tester
)
async
{
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
textInputAction:
TextInputAction
.
done
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
textInputAction:
TextInputAction
.
done
);
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
...
@@ -591,9 +611,10 @@ void main() {
...
@@ -591,9 +611,10 @@ void main() {
expect
(
tester
.
testTextInput
.
setClientArgs
![
'inputAction'
],
TextInputAction
.
done
.
toString
());
expect
(
tester
.
testTextInput
.
setClientArgs
![
'inputAction'
],
TextInputAction
.
done
.
toString
());
});
});
testWidgets
(
'Custom flexibleSpace value'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Custom flexibleSpace value'
,
(
WidgetTester
tester
)
async
{
const
Widget
flexibleSpace
=
Text
(
'custom flexibleSpace'
);
const
Widget
flexibleSpace
=
Text
(
'custom flexibleSpace'
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
flexibleSpace:
flexibleSpace
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
flexibleSpace:
flexibleSpace
);
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
));
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
));
await
tester
.
tap
(
find
.
byTooltip
(
'Search'
));
await
tester
.
tap
(
find
.
byTooltip
(
'Search'
));
...
@@ -710,9 +731,11 @@ void main() {
...
@@ -710,9 +731,11 @@ void main() {
);
);
}
}
testWidgets
(
'includes routeName on Android'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'includes routeName on Android'
,
(
WidgetTester
tester
)
async
{
final
SemanticsTester
semantics
=
SemanticsTester
(
tester
);
final
SemanticsTester
semantics
=
SemanticsTester
(
tester
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
flexibleSpace:
flexibleSpace
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
flexibleSpace:
flexibleSpace
);
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
));
));
...
@@ -730,9 +753,11 @@ void main() {
...
@@ -730,9 +753,11 @@ void main() {
semantics
.
dispose
();
semantics
.
dispose
();
});
});
testWidgets
(
'does not include routeName'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'does not include routeName'
,
(
WidgetTester
tester
)
async
{
final
SemanticsTester
semantics
=
SemanticsTester
(
tester
);
final
SemanticsTester
semantics
=
SemanticsTester
(
tester
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
flexibleSpace:
flexibleSpace
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
flexibleSpace:
flexibleSpace
);
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
));
));
...
@@ -842,9 +867,11 @@ void main() {
...
@@ -842,9 +867,11 @@ void main() {
);
);
}
}
testWidgets
(
'includes routeName on Android'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'includes routeName on Android'
,
(
WidgetTester
tester
)
async
{
final
SemanticsTester
semantics
=
SemanticsTester
(
tester
);
final
SemanticsTester
semantics
=
SemanticsTester
(
tester
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
));
));
...
@@ -862,9 +889,11 @@ void main() {
...
@@ -862,9 +889,11 @@ void main() {
semantics
.
dispose
();
semantics
.
dispose
();
});
});
testWidgets
(
'does not include routeName'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'does not include routeName'
,
(
WidgetTester
tester
)
async
{
final
SemanticsTester
semantics
=
SemanticsTester
(
tester
);
final
SemanticsTester
semantics
=
SemanticsTester
(
tester
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
));
));
...
@@ -883,13 +912,14 @@ void main() {
...
@@ -883,13 +912,14 @@ void main() {
},
variant:
const
TargetPlatformVariant
(<
TargetPlatform
>{
TargetPlatform
.
iOS
,
TargetPlatform
.
macOS
}));
},
variant:
const
TargetPlatformVariant
(<
TargetPlatform
>{
TargetPlatform
.
iOS
,
TargetPlatform
.
macOS
}));
});
});
testWidgets
(
'Custom searchFieldDecorationTheme value'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Custom searchFieldDecorationTheme value'
,
(
WidgetTester
tester
)
async
{
const
InputDecorationTheme
searchFieldDecorationTheme
=
InputDecorationTheme
(
const
InputDecorationTheme
searchFieldDecorationTheme
=
InputDecorationTheme
(
hintStyle:
TextStyle
(
color:
_TestSearchDelegate
.
hintTextColor
),
hintStyle:
TextStyle
(
color:
_TestSearchDelegate
.
hintTextColor
),
);
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
searchFieldDecorationTheme:
searchFieldDecorationTheme
,
searchFieldDecorationTheme:
searchFieldDecorationTheme
,
);
);
addTearDown
(()
=>
delegate
.
dispose
());
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
));
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
));
await
tester
.
tap
(
find
.
byTooltip
(
'Search'
));
await
tester
.
tap
(
find
.
byTooltip
(
'Search'
));
...
@@ -900,12 +930,12 @@ void main() {
...
@@ -900,12 +930,12 @@ void main() {
});
});
// Regression test for: https://github.com/flutter/flutter/issues/66781
// Regression test for: https://github.com/flutter/flutter/issues/66781
testWidgets
(
'text in search bar contrasts background (light mode)'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'text in search bar contrasts background (light mode)'
,
(
WidgetTester
tester
)
async
{
final
ThemeData
themeData
=
ThemeData
(
useMaterial3:
false
);
final
ThemeData
themeData
=
ThemeData
(
useMaterial3:
false
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
defaultAppBarTheme:
true
);
defaultAppBarTheme:
true
,
addTearDown
(()
=>
delegate
.
dispose
());
);
const
String
query
=
'search query'
;
const
String
query
=
'search query'
;
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
passInInitialQuery:
true
,
passInInitialQuery:
true
,
...
@@ -928,12 +958,12 @@ void main() {
...
@@ -928,12 +958,12 @@ void main() {
});
});
// Regression test for: https://github.com/flutter/flutter/issues/66781
// Regression test for: https://github.com/flutter/flutter/issues/66781
testWidgets
(
'text in search bar contrasts background (dark mode)'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'text in search bar contrasts background (dark mode)'
,
(
WidgetTester
tester
)
async
{
final
ThemeData
themeData
=
ThemeData
.
dark
(
useMaterial3:
false
);
final
ThemeData
themeData
=
ThemeData
.
dark
(
useMaterial3:
false
);
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
(
defaultAppBarTheme:
true
);
defaultAppBarTheme:
true
,
addTearDown
(()
=>
delegate
.
dispose
());
);
const
String
query
=
'search query'
;
const
String
query
=
'search query'
;
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
delegate:
delegate
,
delegate:
delegate
,
passInInitialQuery:
true
,
passInInitialQuery:
true
,
...
@@ -956,10 +986,11 @@ void main() {
...
@@ -956,10 +986,11 @@ void main() {
});
});
// Regression test for: https://github.com/flutter/flutter/issues/78144
// Regression test for: https://github.com/flutter/flutter/issues/78144
testWidgets
(
'`Leading`, `Actions` and `FlexibleSpace` nullable test'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'`Leading`, `Actions` and `FlexibleSpace` nullable test'
,
(
WidgetTester
tester
)
async
{
// The search delegate page is displayed with no issues
// The search delegate page is displayed with no issues
// even with a null return values for [buildLeading], [buildActions] and [flexibleSpace].
// even with a null return values for [buildLeading], [buildActions] and [flexibleSpace].
final
_TestEmptySearchDelegate
delegate
=
_TestEmptySearchDelegate
();
final
_TestEmptySearchDelegate
delegate
=
_TestEmptySearchDelegate
();
addTearDown
(
delegate
.
dispose
);
final
List
<
String
>
selectedResults
=
<
String
>[];
final
List
<
String
>
selectedResults
=
<
String
>[];
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
...
@@ -994,11 +1025,12 @@ void main() {
...
@@ -994,11 +1025,12 @@ void main() {
expect
(
selectedResults
,
<
String
>[
'Result'
]);
expect
(
selectedResults
,
<
String
>[
'Result'
]);
});
});
testWidgets
(
'showSearch with useRootNavigator'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'showSearch with useRootNavigator'
,
(
WidgetTester
tester
)
async
{
final
_MyNavigatorObserver
rootObserver
=
_MyNavigatorObserver
();
final
_MyNavigatorObserver
rootObserver
=
_MyNavigatorObserver
();
final
_MyNavigatorObserver
localObserver
=
_MyNavigatorObserver
();
final
_MyNavigatorObserver
localObserver
=
_MyNavigatorObserver
();
final
_TestEmptySearchDelegate
delegate
=
_TestEmptySearchDelegate
();
final
_TestEmptySearchDelegate
delegate
=
_TestEmptySearchDelegate
();
addTearDown
(
delegate
.
dispose
);
await
tester
.
pumpWidget
(
MaterialApp
(
await
tester
.
pumpWidget
(
MaterialApp
(
navigatorObservers:
<
NavigatorObserver
>[
rootObserver
],
navigatorObservers:
<
NavigatorObserver
>[
rootObserver
],
...
@@ -1051,10 +1083,11 @@ void main() {
...
@@ -1051,10 +1083,11 @@ void main() {
expect
(
localObserver
.
pushCount
,
1
);
expect
(
localObserver
.
pushCount
,
1
);
});
});
testWidgets
(
'Query text field shows toolbar initially'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Query text field shows toolbar initially'
,
(
WidgetTester
tester
)
async
{
// This is a regression test for https://github.com/flutter/flutter/issues/95588
// This is a regression test for https://github.com/flutter/flutter/issues/95588
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
final
_TestSearchDelegate
delegate
=
_TestSearchDelegate
();
addTearDown
(()
=>
delegate
.
dispose
());
final
List
<
String
>
selectedResults
=
<
String
>[];
final
List
<
String
>
selectedResults
=
<
String
>[];
await
tester
.
pumpWidget
(
TestHomePage
(
await
tester
.
pumpWidget
(
TestHomePage
(
...
...
packages/flutter/test/material/search_view_theme_test.dart
View file @
38f318b4
...
@@ -196,21 +196,21 @@ void main() {
...
@@ -196,21 +196,21 @@ void main() {
expect
(
inputText
.
style
.
fontSize
,
headerTextStyle
.
fontSize
);
expect
(
inputText
.
style
.
fontSize
,
headerTextStyle
.
fontSize
);
}
}
testWidgets
(
'SearchView properties overrides defaults'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'SearchView properties overrides defaults'
,
(
WidgetTester
tester
)
async
{
await
tester
.
pumpWidget
(
buildFrame
(
useSearchViewProperties:
true
));
await
tester
.
pumpWidget
(
buildFrame
(
useSearchViewProperties:
true
));
await
tester
.
tap
(
find
.
byIcon
(
Icons
.
search
));
await
tester
.
tap
(
find
.
byIcon
(
Icons
.
search
));
await
tester
.
pumpAndSettle
();
// allow the animations to finish
await
tester
.
pumpAndSettle
();
// allow the animations to finish
checkSearchView
(
tester
);
checkSearchView
(
tester
);
});
});
testWidgets
(
'SearchView theme data overrides defaults'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'SearchView theme data overrides defaults'
,
(
WidgetTester
tester
)
async
{
await
tester
.
pumpWidget
(
buildFrame
(
searchViewThemeData:
searchViewTheme
));
await
tester
.
pumpWidget
(
buildFrame
(
searchViewThemeData:
searchViewTheme
));
await
tester
.
tap
(
find
.
byIcon
(
Icons
.
search
));
await
tester
.
tap
(
find
.
byIcon
(
Icons
.
search
));
await
tester
.
pumpAndSettle
();
await
tester
.
pumpAndSettle
();
checkSearchView
(
tester
);
checkSearchView
(
tester
);
});
});
testWidgets
(
'Overall Theme SearchView theme overrides defaults'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Overall Theme SearchView theme overrides defaults'
,
(
WidgetTester
tester
)
async
{
await
tester
.
pumpWidget
(
buildFrame
(
overallTheme:
searchViewTheme
));
await
tester
.
pumpWidget
(
buildFrame
(
overallTheme:
searchViewTheme
));
await
tester
.
tap
(
find
.
byIcon
(
Icons
.
search
));
await
tester
.
tap
(
find
.
byIcon
(
Icons
.
search
));
await
tester
.
pumpAndSettle
();
await
tester
.
pumpAndSettle
();
...
@@ -219,7 +219,7 @@ void main() {
...
@@ -219,7 +219,7 @@ void main() {
// Same as the previous tests with empty SearchViewThemeData's instead of null.
// Same as the previous tests with empty SearchViewThemeData's instead of null.
testWidgets
(
'SearchView properties overrides defaults, empty theme and overall theme'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'SearchView properties overrides defaults, empty theme and overall theme'
,
(
WidgetTester
tester
)
async
{
await
tester
.
pumpWidget
(
buildFrame
(
useSearchViewProperties:
true
,
await
tester
.
pumpWidget
(
buildFrame
(
useSearchViewProperties:
true
,
searchViewThemeData:
const
SearchViewThemeData
(),
searchViewThemeData:
const
SearchViewThemeData
(),
overallTheme:
const
SearchViewThemeData
()));
overallTheme:
const
SearchViewThemeData
()));
...
@@ -228,7 +228,7 @@ void main() {
...
@@ -228,7 +228,7 @@ void main() {
checkSearchView
(
tester
);
checkSearchView
(
tester
);
});
});
testWidgets
(
'SearchView theme overrides defaults and overall theme'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'SearchView theme overrides defaults and overall theme'
,
(
WidgetTester
tester
)
async
{
await
tester
.
pumpWidget
(
buildFrame
(
searchViewThemeData:
searchViewTheme
,
await
tester
.
pumpWidget
(
buildFrame
(
searchViewThemeData:
searchViewTheme
,
overallTheme:
const
SearchViewThemeData
()));
overallTheme:
const
SearchViewThemeData
()));
await
tester
.
tap
(
find
.
byIcon
(
Icons
.
search
));
await
tester
.
tap
(
find
.
byIcon
(
Icons
.
search
));
...
@@ -236,7 +236,7 @@ void main() {
...
@@ -236,7 +236,7 @@ void main() {
checkSearchView
(
tester
);
checkSearchView
(
tester
);
});
});
testWidgets
(
'Overall Theme SearchView theme overrides defaults and null theme'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Overall Theme SearchView theme overrides defaults and null theme'
,
(
WidgetTester
tester
)
async
{
await
tester
.
pumpWidget
(
buildFrame
(
overallTheme:
searchViewTheme
));
await
tester
.
pumpWidget
(
buildFrame
(
overallTheme:
searchViewTheme
));
await
tester
.
tap
(
find
.
byIcon
(
Icons
.
search
));
await
tester
.
tap
(
find
.
byIcon
(
Icons
.
search
));
await
tester
.
pumpAndSettle
();
// allow the animations to finish
await
tester
.
pumpAndSettle
();
// allow the animations to finish
...
...
packages/flutter/test/material/time_picker_theme_test.dart
View file @
38f318b4
...
@@ -404,7 +404,7 @@ void main() {
...
@@ -404,7 +404,7 @@ void main() {
expect
(
confirmButtonStyle
.
toString
(),
equalsIgnoringHashCodes
(
TextButton
.
styleFrom
().
toString
()));
expect
(
confirmButtonStyle
.
toString
(),
equalsIgnoringHashCodes
(
TextButton
.
styleFrom
().
toString
()));
});
});
testWidgets
(
'Material2 - Passing no TimePickerThemeData uses defaults - input mode'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Material2 - Passing no TimePickerThemeData uses defaults - input mode'
,
(
WidgetTester
tester
)
async
{
final
ThemeData
defaultTheme
=
ThemeData
(
useMaterial3:
false
);
final
ThemeData
defaultTheme
=
ThemeData
(
useMaterial3:
false
);
await
tester
.
pumpWidget
(
_TimePickerLauncher
(
themeData:
defaultTheme
,
entryMode:
TimePickerEntryMode
.
input
));
await
tester
.
pumpWidget
(
_TimePickerLauncher
(
themeData:
defaultTheme
,
entryMode:
TimePickerEntryMode
.
input
));
await
tester
.
tap
(
find
.
text
(
'X'
));
await
tester
.
tap
(
find
.
text
(
'X'
));
...
@@ -446,7 +446,7 @@ void main() {
...
@@ -446,7 +446,7 @@ void main() {
expect
(
confirmButtonStyle
.
toString
(),
equalsIgnoringHashCodes
(
TextButton
.
styleFrom
().
toString
()));
expect
(
confirmButtonStyle
.
toString
(),
equalsIgnoringHashCodes
(
TextButton
.
styleFrom
().
toString
()));
});
});
testWidgets
(
'Material3 - Passing no TimePickerThemeData uses defaults - input mode'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Material3 - Passing no TimePickerThemeData uses defaults - input mode'
,
(
WidgetTester
tester
)
async
{
final
ThemeData
defaultTheme
=
ThemeData
(
useMaterial3:
true
);
final
ThemeData
defaultTheme
=
ThemeData
(
useMaterial3:
true
);
await
tester
.
pumpWidget
(
_TimePickerLauncher
(
themeData:
defaultTheme
,
entryMode:
TimePickerEntryMode
.
input
));
await
tester
.
pumpWidget
(
_TimePickerLauncher
(
themeData:
defaultTheme
,
entryMode:
TimePickerEntryMode
.
input
));
await
tester
.
tap
(
find
.
text
(
'X'
));
await
tester
.
tap
(
find
.
text
(
'X'
));
...
@@ -737,7 +737,7 @@ void main() {
...
@@ -737,7 +737,7 @@ void main() {
expect
(
confirmButtonStyle
.
toString
(),
equalsIgnoringHashCodes
(
timePickerTheme
.
confirmButtonStyle
.
toString
()));
expect
(
confirmButtonStyle
.
toString
(),
equalsIgnoringHashCodes
(
timePickerTheme
.
confirmButtonStyle
.
toString
()));
});
});
testWidgets
(
'Time picker uses values from TimePickerThemeData with InputDecorationTheme - input mode'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Time picker uses values from TimePickerThemeData with InputDecorationTheme - input mode'
,
(
WidgetTester
tester
)
async
{
final
TimePickerThemeData
timePickerTheme
=
_timePickerTheme
(
includeInputDecoration:
true
);
final
TimePickerThemeData
timePickerTheme
=
_timePickerTheme
(
includeInputDecoration:
true
);
final
ThemeData
theme
=
ThemeData
(
timePickerTheme:
timePickerTheme
);
final
ThemeData
theme
=
ThemeData
(
timePickerTheme:
timePickerTheme
);
await
tester
.
pumpWidget
(
_TimePickerLauncher
(
themeData:
theme
,
entryMode:
TimePickerEntryMode
.
input
));
await
tester
.
pumpWidget
(
_TimePickerLauncher
(
themeData:
theme
,
entryMode:
TimePickerEntryMode
.
input
));
...
@@ -754,7 +754,7 @@ void main() {
...
@@ -754,7 +754,7 @@ void main() {
expect
(
hourDecoration
.
hintStyle
,
timePickerTheme
.
inputDecorationTheme
!.
hintStyle
);
expect
(
hourDecoration
.
hintStyle
,
timePickerTheme
.
inputDecorationTheme
!.
hintStyle
);
});
});
testWidgets
(
'Time picker uses values from TimePickerThemeData without InputDecorationTheme - input mode'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Time picker uses values from TimePickerThemeData without InputDecorationTheme - input mode'
,
(
WidgetTester
tester
)
async
{
final
TimePickerThemeData
timePickerTheme
=
_timePickerTheme
();
final
TimePickerThemeData
timePickerTheme
=
_timePickerTheme
();
final
ThemeData
theme
=
ThemeData
(
timePickerTheme:
timePickerTheme
);
final
ThemeData
theme
=
ThemeData
(
timePickerTheme:
timePickerTheme
);
await
tester
.
pumpWidget
(
_TimePickerLauncher
(
themeData:
theme
,
entryMode:
TimePickerEntryMode
.
input
));
await
tester
.
pumpWidget
(
_TimePickerLauncher
(
themeData:
theme
,
entryMode:
TimePickerEntryMode
.
input
));
...
...
packages/flutter/test/material/tooltip_test.dart
View file @
38f318b4
...
@@ -1480,16 +1480,18 @@ void main() {
...
@@ -1480,16 +1480,18 @@ void main() {
semantics
.
dispose
();
semantics
.
dispose
();
});
});
testWidgets
(
'Tooltip semantics does not merge into child'
,
(
WidgetTester
tester
)
async
{
testWidgets
WithLeakTracking
(
'Tooltip semantics does not merge into child'
,
(
WidgetTester
tester
)
async
{
final
SemanticsTester
semantics
=
SemanticsTester
(
tester
);
final
SemanticsTester
semantics
=
SemanticsTester
(
tester
);
final
GlobalKey
<
TooltipState
>
tooltipKey
=
GlobalKey
<
TooltipState
>();
final
GlobalKey
<
TooltipState
>
tooltipKey
=
GlobalKey
<
TooltipState
>();
late
final
OverlayEntry
entry
;
addTearDown
(()
=>
entry
..
remove
()..
dispose
());
await
tester
.
pumpWidget
(
await
tester
.
pumpWidget
(
Directionality
(
Directionality
(
textDirection:
TextDirection
.
ltr
,
textDirection:
TextDirection
.
ltr
,
child:
Overlay
(
child:
Overlay
(
initialEntries:
<
OverlayEntry
>[
initialEntries:
<
OverlayEntry
>[
OverlayEntry
(
entry
=
OverlayEntry
(
builder:
(
BuildContext
context
)
{
builder:
(
BuildContext
context
)
{
return
ListView
(
return
ListView
(
children:
<
Widget
>[
children:
<
Widget
>[
...
...
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