-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Labels
customer: googleVarious Google teamsVarious Google teamsf: gesturesflutter/packages/flutter/gestures repository.flutter/packages/flutter/gestures repository.frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.
Description
Internal: b/144873050
Hey, looks like there is a bug preventing gesture detection on right side of the widget inside page view with only one element and viewport fraction smaller than 1.0.
This is how my widget tree looks like:
column
- page view
- gesture detector
- green container
- gesture detector
- blue container
- page view
- gesture detector
- red container
Top gesture detectors (green&blue widgets) work fine, I can click anywhere and I can see debug logs in console.
Bottom gesture detector (red widget) works fine only for left half of the widget. When I click on the right half then onTap callback is not fired. Looks like something is preventing gesture detector from getting input.
flutter doctor output:
[✓] Flutter (Channel beta, v0.9.4, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[✓] Android Studio (version 3.1)
[!] IntelliJ IDEA Community Edition (version 2018.2)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] Connected devices (1 available)
Source code to reproduce bug:
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: Column(children: <Widget>[
Expanded(
child: ColorPages(
colors: <Color>[
Colors.green,
Colors.blue,
],
),
),
Expanded(
child: ColorPages(
colors: <Color>[
Colors.red,
],
),
),
]),
);
}
}
class ColorPages extends StatefulWidget {
final List<Color> colors;
const ColorPages({Key key, this.colors}) : super(key: key);
@override
ColorPagesState createState() {
return new ColorPagesState();
}
}
class ColorPagesState extends State<ColorPages> {
PageController _pageController;
@override
void initState() {
super.initState();
_pageController = new PageController(
viewportFraction: 0.5,
);
}
@override
Widget build(BuildContext context) {
return PageView.builder(
controller: _pageController,
itemBuilder: (context, index) {
return GestureDetector(
onTap: () {
print(DateTime.now().toIso8601String() + " " + widget.colors[index].toString());
},
child: Container(
color: widget.colors[index],
),
);
},
itemCount: widget.colors.length,
);
}
}
fourman-alex, AndreHaueisen and GenixPL
Metadata
Metadata
Assignees
Labels
customer: googleVarious Google teamsVarious Google teamsf: gesturesflutter/packages/flutter/gestures repository.flutter/packages/flutter/gestures repository.frameworkflutter/packages/flutter repository. See also f: labels.flutter/packages/flutter repository. See also f: labels.
