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
ea7d5bf2
Commit
ea7d5bf2
authored
Aug 05, 2016
by
Ian Hickson
Committed by
GitHub
Aug 05, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
When a list is scrolling, children can't be tapped (#5222)
parent
260cfcdb
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
43 additions
and
9 deletions
+43
-9
smoke_test.dart
examples/flutter_gallery/test/smoke_test.dart
+11
-8
scrollable.dart
packages/flutter/lib/src/widgets/scrollable.dart
+4
-1
scrollable_fling_test.dart
packages/flutter/test/widget/scrollable_fling_test.dart
+28
-0
No files found.
examples/flutter_gallery/test/smoke_test.dart
View file @
ea7d5bf2
...
...
@@ -43,8 +43,9 @@ Future<Null> smokeDemo(WidgetTester tester, String routeName) async {
await
tester
.
tap
(
menuItem
);
await
tester
.
pump
();
// Launch the demo.
await
tester
.
pump
(
const
Duration
(
seconds:
1
));
// Wait until the demo has opened.
await
tester
.
pump
(
const
Duration
(
seconds:
1
));
// Wait until the demo has opened.
expect
(
find
.
text
(
'Flutter Gallery'
),
findsNothing
);
// Go back
if
(
routeName
==
'/pesto'
)
{
...
...
@@ -64,9 +65,9 @@ Future<Null> smokeDemo(WidgetTester tester, String routeName) async {
}
void
main
(
)
{
TestWidgetsFlutterBinding
binding
=
TestWidgetsFlutterBinding
.
ensureInitialized
();
if
(
binding
is
LiveTestWidgetsFlutterBinding
)
binding
.
allowAllFrames
=
true
;
// TestWidgetsFlutterBinding binding = TestWidgetsFlutterBinding.ensureInitialized();
// if (binding is LiveTestWidgetsFlutterBinding)
//
binding.allowAllFrames = true;
testWidgets
(
'Flutter Gallery app smoke test'
,
(
WidgetTester
tester
)
async
{
flutter_gallery_main
...
...
@@ -87,15 +88,17 @@ void main() {
final
String
routeName
=
routeNames
[
i
];
await
smokeDemo
(
tester
,
routeName
);
await
tester
.
scroll
(
findGalleryItemByRouteName
(
tester
,
routeName
),
new
Offset
(
0.0
,
scrollDeltas
[
i
]));
await
tester
.
pump
();
await
tester
.
pump
();
// start the scroll
await
tester
.
pump
(
const
Duration
(
milliseconds:
500
));
// wait for overscroll to timeout, if necessary
await
tester
.
pump
(
const
Duration
(
milliseconds:
2000
));
// wait for overscroll to fade away, if necessary
tester
.
binding
.
debugAssertNoTransientCallbacks
(
'A transient callback was still active after leaving route
$routeName
'
);
}
Finder
navigationMenuButton
=
findNavigationMenuButton
(
tester
);
expect
(
navigationMenuButton
,
findsOneWidget
);
await
tester
.
tap
(
navigationMenuButton
);
await
tester
.
pump
();
// Start opening drawer.
await
tester
.
pump
(
const
Duration
(
seconds:
1
));
// Wait until it's really opened.
await
tester
.
pump
(
const
Duration
(
seconds:
1
));
// Wait until it's really opened.
// switch theme
await
tester
.
tap
(
find
.
text
(
'Dark'
));
...
...
packages/flutter/lib/src/widgets/scrollable.dart
View file @
ea7d5bf2
...
...
@@ -652,7 +652,10 @@ class ScrollableState<T extends Scrollable> extends State<T> {
key:
_gestureDetectorKey
,
gestures:
buildGestureDetectors
(),
behavior:
HitTestBehavior
.
opaque
,
child:
buildContent
(
context
)
child:
new
IgnorePointer
(
ignoring:
_controller
.
isAnimating
,
child:
buildContent
(
context
)
)
);
}
...
...
packages/flutter/test/widget/scrollable_fling_test.dart
0 → 100644
View file @
ea7d5bf2
// Copyright 2016 The Chromium 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
'package:flutter_test/flutter_test.dart'
;
import
'package:flutter/widgets.dart'
;
void
main
(
)
{
testWidgets
(
'fling and tap'
,
(
WidgetTester
tester
)
async
{
List
<
String
>
log
=
<
String
>[];
List
<
Widget
>
textWidgets
=
<
Widget
>[];
for
(
int
i
=
0
;
i
<
250
;
i
++)
textWidgets
.
add
(
new
GestureDetector
(
onTap:
()
{
log
.
add
(
'tap
$i
'
);
},
child:
new
Text
(
'
$i
'
)));
await
tester
.
pumpWidget
(
new
Block
(
children:
textWidgets
));
expect
(
log
,
equals
(<
String
>[]));
await
tester
.
tap
(
find
.
byType
(
Scrollable
));
await
tester
.
pump
(
const
Duration
(
milliseconds:
50
));
expect
(
log
,
equals
(<
String
>[
'tap 18'
]));
await
tester
.
fling
(
find
.
byType
(
Scrollable
),
new
Offset
(
0.0
,
-
200.0
),
1000.0
);
await
tester
.
pump
(
const
Duration
(
milliseconds:
50
));
expect
(
log
,
equals
(<
String
>[
'tap 18'
]));
await
tester
.
tap
(
find
.
byType
(
Scrollable
));
await
tester
.
pump
(
const
Duration
(
milliseconds:
50
));
expect
(
log
,
equals
(<
String
>[
'tap 18'
]));
});
}
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