Vertical timetable flutter

So after some more research, I arrived at a solution for this problem.

The vertical lists

In order to construct the vertical lists, I used the following code. This constructs one timetable for an asset.

const totalWidth = 2400.0; // Constant for all calculations. 24 hours in a day! 100 pixels per hour.
Widget _createTimetable(SomeData data) {
    return Column(
      children: [
        Container(
          padding: EdgeInsets.all(2),
          decoration: BoxDecoration(
              color: Colors.grey,
          ),
          width: double.infinity,
          child: Text("${data.name}", style: TextStyle(color: Colors.white)),
        ),
        Container(
            height: 40, // Fixed height
            child: ListView(
              scrollDirection: Axis.horizontal,
              controller: _controllers[data.name], // Controller, see next section
              physics: ClampingScrollPhysics(),
              shrinkWrap: true,
              children: [
                Container(
                  width: totalWidth,
                  color: Colors.white,
                  child: Stack(
                    children: [Positioned(left: timeOfsset), bottom: 0, top: 0, child: <Some Container>]
                  )),
              ]
            )
        )
      ],
    );

This approach uses a container that has a static width. This container is put into the ListView to make it scrollable. The container in turn houses a Stack widget. This widget allows the placement of widgets using the Positioned widget. The advantage of this is that they do not interfere with each other. This makes the positioning rather easy (after doing some math!).

Linking the lists

In order to link the ListController objects for each list, I used the linked_scroll_controller package. This allows you to generate the controllers and link them together. Make sure to dispose of them probably when the widget is disposed of.

In order to get the timestamp at the top, I used an additional vertical view that uses the same method. It's linked together with the other controllers.

Conclusion

This solution is not ideal yet I think. However, it works! For the calculations of the offSet and width of the 'reservations, some helper functions were made. They take the total width into account.

That's all really! Hope this will help some other people in the future. If you have any improvements feel free to comment or edit.