Before we jump to code, let’s address one major issue that people face when putting a listview in a column or another listview. Take a look at this hand-drawn widget hierarchy for the above UI.

As you can see in the above sketch, a column has two children, one is the search bar and the other is an Expanded widget which contains the listview. In order to put a listview in a column you have to bind it with a height constrained widget. When we put it in an Expanded widget, that technically means it has to fill whatever space is left in the screen.

Listviews always want them to be placed in a widget which has some height, they won’t populate if they aren’t put into a height constrained widget

The listviews inside the outer listview are bound with height constrained sized boxes.