How to build and scroll a grid of different sized widgets

My project is a 2d tile based UI of three tiles wide and infinite tiles in height.

I have an array of tiles to draw on the screen, they have position (x,y) and varying sizes (1x1,2x1,2x2).

so, 1x1 is one third of the screen width. and 2x1 is two thirds width and 1 tile height value.

I tried using GridView but failed because of the varying size tiles.

Is there a nice way to do this?
maybe ‘Positioned’ to locate my tiles anywhere on screen.
maybe SingleChildScrollView to scroll vertically.

I am new to Flutter - is there a nice way?