1

So in my Flutter project I'm using this plugin flutter_native_screenshot

It works quite well for single screenshot of the page, but it's not taking full scrollable screenshot. I've checked behind this plugin use a code like takeScreenshotOld()

View view = this.activity.getWindow().getDecorView().getRootView();

            view.setDrawingCacheEnabled(true);

            Bitmap bitmap = null;
            if (this.renderer.getClass() == FlutterView.class) {
                bitmap = ((FlutterView) this.renderer).getBitmap();
            } else if (this.renderer.getClass() == FlutterRenderer.class) {
                bitmap = ((FlutterRenderer) this.renderer).getBitmap();
            }

The question is:- How can I make this code to take full scrolled screenshot.

I've tried flutter screenshot plugin as well but unfortunately it fails to capture flutter_tex (webview) and shows blank. The native plugin worked but unable to get full page.

Cahepeh
  • 11
  • 2

1 Answers1

1

This answer is using Java but you can follow the same logic in flutter, You will need to do the following steps:

  1. Implement a listener to the scrollView scrolling, then every time the height is dividable by screen height, take a screenshot
Display display = getWindowManager().getDefaultDisplay(); 
int height = display.getHeight();
mScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {
        @Override
        public void onScrollChanged() {
            int scrollY = targetScrollView.getScrollY();
            if (scrollY % height == 0){
              takeScreenShotAndSaveIt();
            }
        }
    });
  1. Manullay scroll through the scroll view
mScrollView.post(new Runnable() { 
        public void run() { 
             mScrollView.fullScroll(mScrollView.FOCUS_DOWN);
        } 
});
  1. Finally you will remove scroll listener and merge the saved images of the screen shots.

Another option is to take the full view as bitmap and save it: https://stackoverflow.com/a/43817149/19074651