Repository: flutter
Issue: Request for SliverCrossAxisScrollView (part of / next to the 2D scroll project)
Labels: c: new feature,framework,f: scrolling,c: proposal,P3,team-framework,triaged-framework

### Is there an existing issue for this?

- [X] I have searched the [existing issues](https://github.com/flutter/flutter/issues)
- [X] I have read the [guide to filing a bug](https://flutter.dev/docs/resources/bug-reports)

### Use case

We are developing a scrollable page template for a large flutter application: the basic idea behind this page template is that it offers a single vertical scroll experience (no embedded vertical scroll views and scroll bars), with sticky / pinned header elements for crucial information, floating ones for less important information and vertically scrolling content (think of lists, grids and tables). The basic goal of this widget being that on vertical scroll as much as possible space if given to the scrolling content (i.e. the list, grid, table, ...).

This sort of widget is naturally implemented in terms of a CustomScrollView with header elements as well as content implemented as slivers. It took a considerable investment to come to grips with the sliver render protocol in order to realize this and we ended up with depending on the `sliver_tools` package for some sliver features missing in the framework and having to write some sliver widgets ourselves.

The biggest challenge was yet to come by having to support scrolling content too big to fit in the main scroll axis's cross extent, say a table with table header and rows that should be scrollable in the main scroll view's cross axis. At which point we took particular interest in the ongoing '2D scrolling' development project (https://github.com/orgs/flutter/projects/32/views/1 and https://docs.google.com/document/d/1C2hAq-gMAIx4Cbym7EMhVAcPZ2hmNxlgijpYmgTpmUU/edit).

We were hoping for a sliver (i.e. something that could, together with other slivers, be used in a CustomScrollView's list of slivers and would provide a 'cross axis scroll view'. I think that this track was actually considered (see the design document under the heading of 'Sliver Composition'), but was abandoned, for three main reasons: the insufficiency of the current 'sliver language', the (my paraphrase) anyhow user-unfriendliness of slivers and the inability to support features such as diagonal scrolling. For these reasons the project is heading in a direction of a 2D scrollable distinct of and independent from the sliver world. 

The prospect of having a a 2D scrollable widget with features such diagonal scroll is great; but at the same time, I think that our current use case with a CustomScrollView that can host a 'cross axis scroll view sliver / sliver list' remains legitimate as well. Native web API can support this use case; but in the current state of the Flutter framework, it is pretty hard to realize.

In the closest approximation of this use case, we basically do the following (pseudo code):

```
CrossAxisScrollbar(
 child: CustomScrollview(
  axis: ScrollDirection.vertical,
  slivers: [
    // sticky and floating header slivers
    stickyTableHeaderSliver,
    ...[tableRowSlivers]
  ])
```
in which the `stickyTableHeaderSliver` and the `tableRowSlivers` all have horizontal scroll views controlled by linked scrollControllers; the controller of the stickyHeaderSliver is also the controller of the CrossAxisScrollbar.

This is a pretty complicated setup with a lot of gotcha's to take into account. 


### Proposal

It would be nice if Flutter would be able to support the above mentioned use case. Either
- (rather unlikely, I would say), by having a sliver version of the `TwoDimensionalScrollable` that would hook into a parent CustomScrollView for the latter's main axis;
- or have a 'SliverCrossAxisScrollView` widget that support our use case without requiring additional features such as diagonal scroll.