backdrop icon indicating copy to clipboard operation
backdrop copied to clipboard

cannot paste if backdrop is revealed

Open lastmeta opened this issue 3 years ago • 6 comments

Describe the bug I have an implementation where the backdrop is revealed, and takes up half the screen. I am unable to paste (by long holding and waiting for the paste popup). It does popup like normal, but clicking on the paste button does not preform the past task. Sometimes it seems like it clicks behind the paste button.

Possible Cause So what I think is happening is that by pushing down the front layer the guesture detection for the paste popup gets pushed down too. This hypothesis is bolstered by the fact that I can reveal the backlayer by 1 pixel and still successfully click the paste button.

To Reproduce Steps to reproduce the behavior: Maybe this could be reproduced in other projects, I hope its not an artifact of the specific way I've implemented the Backdrop.

Screenshots works fine when I disable the backdrop reveal image paste button just disappears on click when backdrop revealed image

Smartphone (please complete the following information):

  • Device: pixel 3
  • OS: android
  • Browser emulator

Additional context My particular implementation shouldn't cause this but if it matters, you'll see I instantiate the backdrop once and it remains persistent as the user navigates through the app (child being the page widget they are on)

...
class RavenMobileApp extends StatelessWidget {
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorObservers: [components.navigator],
      initialRoute: '/',
      routes: ...
      ...
      builder: (context, child) {
        components.navigator.scaffoldContext = context;
        return BackdropScaffold(
          ...
          appBar: BackdropAppBar(...),
          backLayer: BackLayer(),
          frontLayer: Container(
            color: Colors.white,
            child: child!,        //  <--- front page navigation
          ),
        );
      },
    );
  }
...

lastmeta avatar Mar 11 '22 19:03 lastmeta

actually it turns out paste works correctly up to but not including a backdrop layer height of 163. any height less than that, paste works just fine.

      Backdrop.of(components.navigator.routeContext!).revealBackLayer();
      return Container(height: 162.99); // works fine

So this is not due to my original hypothesis...

lastmeta avatar Mar 11 '22 20:03 lastmeta

Interesting, will look into it. Meanwhile, if you find the solution - feel free to file a PR.

daadu avatar Mar 13 '22 05:03 daadu

image

I'm struggling to figure out what the square box at the top is, but if the paste button is not within that square it does not paste.

Notice it is the same size as the white (front) area.

lastmeta avatar Mar 14 '22 23:03 lastmeta

here's a better view image This area is as large as the white area. some kind of gesturedetection, idk. But it doesn't move down with the fling of the backdrop... and when the keyboard comes up it gets even smaller because it stays the same size as the white (front) area.

lastmeta avatar Mar 14 '22 23:03 lastmeta

it seems like that area is the raw gesture detection area associated with the paste button. it only shows up in the widget inspector when the paste widget tooltip is displayed.

lastmeta avatar Mar 15 '22 00:03 lastmeta

found a viable workaround for my usecase by disabling the toolbar altogether, but I should also note here that if we say resizeToAvoidBottomInset=false on the scaffold it also works fine.

That tells me it's probably in the right spot, but the scaffold push up functionality pushes it up to it is as in the pictures, overlapping the backlayer rather than the front.

lastmeta avatar Mar 15 '22 17:03 lastmeta