Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The highlight frame of RaisedButton lost when need gesture disambiguation #66087

Closed
xu-baolin opened this issue Sep 18, 2020 · 11 comments
Closed
Labels
a: quality A truly polished experience f: material design flutter/packages/flutter/material repository. found in release: 1.22 Found to occur in 1.22 framework flutter/packages/flutter repository. See also f: labels. has reproducible steps The issue has been confirmed reproducible and is ready to work on waiting for customer response The Flutter team cannot make further progress on this issue until the original reporter responds

Comments

@xu-baolin
Copy link
Member

xu-baolin commented Sep 18, 2020

This issue comes from #65849

Descriptions

From the logs, we can see that the frame of the highlight was merged because the occurrence and disappearance of the highlight are triggered in the same vsync, so we can not see the highlight frame.

This only happens when there is a gesture competition.

Logs and Sample Code

void main() => 
  runApp(MaterialApp(
    home: Scaffold(
      body: SizedBox(
        height: 320,
        child: PageView(
          children: [
            RaisedButton(
              onPressed: () {},
              child: Text("test"),
              highlightColor: Colors.black,
            ),RaisedButton(
              onPressed: () {},
              child: Text("test"),
              highlightColor: Colors.black,
            ),
          ],
        ),
      ),
    ),
  ));

With gesture competition

updateHighlight [true][2020-09-16 11:34:50.470907]
updateHighlight [false][2020-09-16 11:34:50.479360]

I/flutter ( 6730): updateHighlight [true][2020-09-16 11:34:50.470907]
I/flutter ( 6730): #0      debugPrintStack (package:flutter/src/foundation/assertions.dart:1112:29)
I/flutter ( 6730): #1      _InkResponseState.updateHighlight (package:flutter/src/material/ink_well.dart:827:5)
I/flutter ( 6730): #2      _InkResponseState._startSplash (package:flutter/src/material/ink_well.dart:985:5)
I/flutter ( 6730): #3      _InkResponseState._handleTapDown (package:flutter/src/material/ink_well.dart:963:5)
I/flutter ( 6730): #4      TapGestureRecognizer.handleTapDown.<anonymous closure> (package:flutter/src/gestures/tap.dart:571:61)
I/flutter ( 6730): #5      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:183:24)
I/flutter ( 6730): #6      TapGestureRecognizer.handleTapDown (package:flutter/src/gestures/tap.dart:571:11)
I/flutter ( 6730): #7      BaseTapGestureRecognizer._checkDown (package:flutter/src/gestures/tap.dart:279:5)
I/flutter ( 6730): #8      BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:257:7)
I/flutter ( 6730): #9      GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:157:27)
I/flutter ( 6730): #10     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:362:20)
I/flutter ( 6730): #11     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:338:22)
I/flutter ( 6730): #12     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:267:11)
I/flutter ( 6730): #13     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:295:7)
I/flutter ( 6730): #14     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:240:7)
I/flutter ( 6730): #15     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:213:7)
I/flutter ( 6730): #19     _invoke1 (dart:ui/hooks.dart:265:10)
I/flutter ( 6730): #20     _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5)
I/flutter ( 6730): (elided 3 frames from dart:async)
I/flutter ( 6730): _handleHighlightChanged [true]
I/flutter ( 6730): updateHighlight [false][2020-09-16 11:34:50.479360]
I/flutter ( 6730): #0      debugPrintStack (package:flutter/src/foundation/assertions.dart:1112:29)
I/flutter ( 6730): #1      _InkResponseState.updateHighlight (package:flutter/src/material/ink_well.dart:827:5)
I/flutter ( 6730): #2      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:991:5)
I/flutter ( 6730): #3      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1113:38)
I/flutter ( 6730): #4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:183:24)
I/flutter ( 6730): #5      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:598:11)
I/flutter ( 6730): #6      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:287:5)
I/flutter ( 6730): #7      BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:259:7)
I/flutter ( 6730): #8      GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:157:27)
I/flutter ( 6730): #9      GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:362:20)
I/flutter ( 6730): #10     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:338:22)
I/flutter ( 6730): #11     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:267:11)
I/flutter ( 6730): #12     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:295:7)
I/flutter ( 6730): #13     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:240:7)
I/flutter ( 6730): #14     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:213:7)
I/flutter ( 6730): #18     _invoke1 (dart:ui/hooks.dart:265:10)
I/flutter ( 6730): #19     _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5)
I/flutter ( 6730): (elided 3 frames from dart:async)

Without gesture competition

updateHighlight [true][2020-09-16 11:30:14.828048]
updateHighlight [false][2020-09-16 11:30:14.873896]

I/flutter ( 6164): updateHighlight [true][2020-09-16 11:30:14.828048]
I/flutter ( 6164): #0      debugPrintStack (package:flutter/src/foundation/assertions.dart:1112:29)
I/flutter ( 6164): #1      _InkResponseState.updateHighlight (package:flutter/src/material/ink_well.dart:827:5)
I/flutter ( 6164): #2      _InkResponseState._startSplash (package:flutter/src/material/ink_well.dart:985:5)
I/flutter ( 6164): #3      _InkResponseState._handleTapDown (package:flutter/src/material/ink_well.dart:963:5)
I/flutter ( 6164): #4      TapGestureRecognizer.handleTapDown.<anonymous closure> (package:flutter/src/gestures/tap.dart:571:61)
I/flutter ( 6164): #5      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:183:24)
I/flutter ( 6164): #6      TapGestureRecognizer.handleTapDown (package:flutter/src/gestures/tap.dart:571:11)
I/flutter ( 6164): #7      BaseTapGestureRecognizer._checkDown (package:flutter/src/gestures/tap.dart:279:5)
I/flutter ( 6164): #8      BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:257:7)
I/flutter ( 6164): #9      GestureArenaManager._resolveByDefault (package:flutter/src/gestures/arena.dart:251:25)
I/flutter ( 6164): #10     GestureArenaManager._tryToResolveArena.<anonymous closure> (package:flutter/src/gestures/arena.dart:232:31)
I/flutter ( 6164): (elided 10 frames from dart:async)
I/flutter ( 6164): _handleHighlightChanged [true]
I/flutter ( 6164): updateHighlight [false][2020-09-16 11:30:14.873896]
I/flutter ( 6164): #0      debugPrintStack (package:flutter/src/foundation/assertions.dart:1112:29)
I/flutter ( 6164): #1      _InkResponseState.updateHighlight (package:flutter/src/material/ink_well.dart:827:5)
I/flutter ( 6164): #2      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:991:5)
I/flutter ( 6164): #3      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1113:38)
I/flutter ( 6164): #4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:183:24)
I/flutter ( 6164): #5      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:598:11)
I/flutter ( 6164): #6      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:287:5)
I/flutter ( 6164): #7      BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:222:7)
I/flutter ( 6164): #8      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:476:9)
I/flutter ( 6164): #9      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:77:12)
I/flutter ( 6164): #10     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:122:9)
I/flutter ( 6164): #11     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8)
I/flutter ( 6164): #12     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:120:18)
I/flutter ( 6164): #13     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:106:7)
I/flutter ( 6164): #14     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:358:19)
I/flutter ( 6164): #15     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:338:22)
I/flutter ( 6164): #16     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:267:11)
I/flutter ( 6164): #17     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:295:7)
I/flutter ( 6164): #18     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:240:7)
I/flutter ( 6164): #19     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:213:7)
I/flutter ( 6164): #23     _invoke1 (dart:ui/hooks.dart:265:10)
I/flutter ( 6164): #24     _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5)
I/flutter ( 6164): (elided 3 frames from dart:async)
@xu-baolin
Copy link
Member Author

xu-baolin commented Sep 18, 2020

@Hixie @liyuqian Would you guys like to take a look :)

@pedromassangocode
Copy link

Hi @xu-baolin
I run your code and I don't see the logs. Can you please share how to get it? I'm not sure how to verify that this is bug or working as expected.

@pedromassangocode pedromassangocode added in triage Presently being triaged by the triage team waiting for customer response The Flutter team cannot make further progress on this issue until the original reporter responds labels Sep 18, 2020
@xu-baolin
Copy link
Member Author

@pedromassangocode
Hi, you can add a log as follows, thanks for your reproduce.

  void updateHighlight(_HighlightType type, { @required bool value, bool callOnHover = true }) {
    print('updateHighlight[$type][$value][${DateTime.now()}]');
    debugPrintStack();
    final InkHighlight highlight = _highlights[type];
    void handleInkRemoval() {
      assert(_highlights[type] != null);
      _highlights[type] = null;
      updateKeepAlive();
    }
  ...

@no-response no-response bot removed the waiting for customer response The Flutter team cannot make further progress on this issue until the original reporter responds label Sep 18, 2020
@pedromassangocode
Copy link

Hi @xu-baolin
It still unclear for me. Where do I call this method, or where should I add this print()?

@pedromassangocode pedromassangocode added the waiting for customer response The Flutter team cannot make further progress on this issue until the original reporter responds label Sep 18, 2020
@xu-baolin
Copy link
Member Author

@pedromassangocode
You add log at this function,

void updateHighlight(_HighlightType type, { @required bool value, bool callOnHover = true }) {
final InkHighlight highlight = _highlights[type];
void handleInkRemoval() {
assert(_highlights[type] != null);
_highlights[type] = null;
updateKeepAlive();
}

@no-response no-response bot removed the waiting for customer response The Flutter team cannot make further progress on this issue until the original reporter responds label Sep 22, 2020
@pedromassangocode
Copy link

I was able to reproduce this on latest master channel.

Logs
I/flutter ( 4883): updateHighlight[_HighlightType.pressed][true][2020-09-22 08:16:12.331423]
I/flutter ( 4883): #0      debugPrintStack (package:flutter/src/foundation/assertions.dart:1112:29)
I/flutter ( 4883): #1      _InkResponseState.updateHighlight (package:flutter/src/material/ink_well.dart:827:5)
I/flutter ( 4883): #2      _InkResponseState._startSplash (package:flutter/src/material/ink_well.dart:985:5)
I/flutter ( 4883): #3      _InkResponseState._handleTapDown (package:flutter/src/material/ink_well.dart:963:5)
I/flutter ( 4883): #4      TapGestureRecognizer.handleTapDown.<anonymous closure> (package:flutter/src/gestures/tap.dart:571:61)
I/flutter ( 4883): #5      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:183:24)
I/flutter ( 4883): #6      TapGestureRecognizer.handleTapDown (package:flutter/src/gestures/tap.dart:571:11)
I/flutter ( 4883): #7      BaseTapGestureRecognizer._checkDown (package:flutter/src/gestures/tap.dart:279:5)
I/flutter ( 4883): #8      BaseTapGestureRecognizer.didExceedDeadline (package:flutter/src/gestures/tap.dart:250:5)
I/flutter ( 4883): #9      PrimaryPointerGestureRecognizer.didExceedDeadlineWithEvent (package:flutter/src/gestures/recognizer.dart:502:5)
I/flutter ( 4883): #10     PrimaryPointerGestureRecognizer.addAllowedPointer.<anonymous closure> (package:flutter/src/gestures/recognizer.dart:455:41)
I/flutter ( 4883): (elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
I/flutter ( 4883): updateHighlight[_HighlightType.pressed][false][2020-09-22 08:16:12.381181]
I/flutter ( 4883): #0      debugPrintStack (package:flutter/src/foundation/assertions.dart:1112:29)
I/flutter ( 4883): #1      _InkResponseState.updateHighlight (package:flutter/src/material/ink_well.dart:827:5)
I/flutter ( 4883): #2      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:991:5)
I/flutter ( 4883): #3      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1113:38)
I/flutter ( 4883): #4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:183:24)
I/flutter ( 4883): #5      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:598:11)
I/flutter ( 4883): #6      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:287:5)
I/flutter ( 4883): #7      BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:259:7)
I/flutter ( 4883): #8      GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:157:27)
I/flutter ( 4883): #9      GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:374:20)
I/flutter ( 4883): #10     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:350:22)
I/flutter ( 4883): #11     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:266:11)
I/flutter ( 4883): #12     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:305:7)
I/flutter ( 4883): #13     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:240:7)
I/flutter ( 4883): #14     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:213:7)
I/flutter ( 4883): #18     _invoke1 (dart:ui/hooks.dart:265:10)
I/flutter ( 4883): #19     _dispatchPointerDataPacket (dart:ui/hooks.dart:174:5)
I/flutter ( 4883): (elided 3 frames from dart:async)

flutter doctor -v
[✓] Flutter (Channel master, 1.22.0-10.0.pre.281, on Mac OS X 10.15.6 19G2021 x86_64, locale en)
    • Flutter version 1.22.0-10.0.pre.281 at /Users/pedromassango/dev/SDKs/flutter_master
    • Framework revision 511367aa5a (9 hours ago), 2020-09-21 15:33:32 -0700
    • Engine revision 4b8477d115
    • Dart version 2.10.0 (build 2.10.0-142.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
    • Android SDK at /Users/pedromassango/Library/Android/sdk
    • Platform android-30, build-tools 30.0.1
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0, Build version 12A7209
    • CocoaPods version 1.9.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] IntelliJ IDEA Community Edition (version 2020.2.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 49.0.4
    • Dart plugin version 202.7319.5

[✓] VS Code (version 1.48.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.14.1

[✓] Connected device (4 available)
    • sdk gphone x86 arm (mobile) • emulator-5554 • android-x86    • Android 11 (API 30) (emulator)
    • macOS (desktop)             • macos         • darwin-x64     • Mac OS X 10.15.6 19G2021 x86_64
    • Web Server (web)            • web-server    • web-javascript • Flutter Tools
    • Chrome (web)                • chrome        • web-javascript • Google Chrome 85.0.4183.102

! Doctor found issues in 1 category.
Process finished with exit code 0

@pedromassangocode pedromassangocode added a: quality A truly polished experience f: material design flutter/packages/flutter/material repository. found in release: 1.22 Found to occur in 1.22 framework flutter/packages/flutter repository. See also f: labels. has reproducible steps The issue has been confirmed reproducible and is ready to work on and removed in triage Presently being triaged by the triage team labels Sep 22, 2020
@liyuqian
Copy link
Contributor

Also CC @goderbauer

@liyuqian
Copy link
Contributor

Just chatted with @HansMuller . He's been working on buttons so he'll take a look at this issue 😄

@Piinks
Copy link
Contributor

Piinks commented Apr 11, 2022

RaisedButton has been removed from the framework and replaced by ElevatedButton. In the new API, in accordance with updated Material Design specs, highlight color no longer exists, so I think we may be able to close this issue now.

@Piinks Piinks added the waiting for customer response The Flutter team cannot make further progress on this issue until the original reporter responds label Apr 11, 2022
@github-actions
Copy link

github-actions bot commented May 2, 2022

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now.
If you find this problem please file a new issue with the same description, what happens, logs and the output of 'flutter doctor -v'. All system setups can be slightly different so it's always better to open new issues and reference the related ones.
Thanks for your contribution.

@github-actions github-actions bot closed this as completed May 2, 2022
@github-actions
Copy link

This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 17, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
a: quality A truly polished experience f: material design flutter/packages/flutter/material repository. found in release: 1.22 Found to occur in 1.22 framework flutter/packages/flutter repository. See also f: labels. has reproducible steps The issue has been confirmed reproducible and is ready to work on waiting for customer response The Flutter team cannot make further progress on this issue until the original reporter responds
Projects
None yet
Development

No branches or pull requests

4 participants