@@ -42,6 +42,7 @@ class ScrollablePositionedList extends StatefulWidget {
4242 required this .itemBuilder,
4343 Key ? key,
4444 this .itemScrollController,
45+ this .scrollController,
4546 this .shrinkWrap = false ,
4647 ItemPositionsListener ? itemPositionsListener,
4748 this .scrollOffsetController,
@@ -73,6 +74,7 @@ class ScrollablePositionedList extends StatefulWidget {
7374 Key ? key,
7475 this .shrinkWrap = false ,
7576 this .itemScrollController,
77+ this .scrollController,
7678 ItemPositionsListener ? itemPositionsListener,
7779 this .scrollOffsetController,
7880 ScrollOffsetListener ? scrollOffsetListener,
@@ -94,6 +96,8 @@ class ScrollablePositionedList extends StatefulWidget {
9496 scrollOffsetNotifier = scrollOffsetListener as ScrollOffsetNotifier ? ,
9597 super (key: key);
9698
99+ final ScrollController ? scrollController;
100+
97101 /// Number of items the [itemBuilder] can produce.
98102 final int itemCount;
99103
@@ -405,6 +409,11 @@ class _ScrollablePositionedListState extends State<ScrollablePositionedList>
405409
406410 @override
407411 Widget build (BuildContext context) {
412+ if (widget.scrollController? .positions.isEmpty == true )
413+ WidgetsBinding .instance.addPostFrameCallback ((_) {
414+ widget.scrollController? .attach (primary.scrollController.position);
415+ });
416+
408417 return LayoutBuilder (
409418 builder: (context, constraints) {
410419 final cacheExtent = _cacheExtent (constraints);
@@ -610,6 +619,9 @@ class _ScrollablePositionedListState extends State<ScrollablePositionedList>
610619 if (mounted) {
611620 setState (() {
612621 if (opacity.value >= 0.5 ) {
622+ if (widget.scrollController? .position != null ) {
623+ widget.scrollController? .detach (widget.scrollController! .position);
624+ }
613625 // Secondary [ListView] is more visible than the primary; make it the
614626 // new primary.
615627 var temp = primary;
0 commit comments