@@ -42,6 +42,7 @@ class ScrollablePositionedList extends StatefulWidget {
42
42
required this .itemBuilder,
43
43
Key ? key,
44
44
this .itemScrollController,
45
+ this .scrollController,
45
46
this .shrinkWrap = false ,
46
47
ItemPositionsListener ? itemPositionsListener,
47
48
this .scrollOffsetController,
@@ -73,6 +74,7 @@ class ScrollablePositionedList extends StatefulWidget {
73
74
Key ? key,
74
75
this .shrinkWrap = false ,
75
76
this .itemScrollController,
77
+ this .scrollController,
76
78
ItemPositionsListener ? itemPositionsListener,
77
79
this .scrollOffsetController,
78
80
ScrollOffsetListener ? scrollOffsetListener,
@@ -94,6 +96,8 @@ class ScrollablePositionedList extends StatefulWidget {
94
96
scrollOffsetNotifier = scrollOffsetListener as ScrollOffsetNotifier ? ,
95
97
super (key: key);
96
98
99
+ final ScrollController ? scrollController;
100
+
97
101
/// Number of items the [itemBuilder] can produce.
98
102
final int itemCount;
99
103
@@ -405,6 +409,11 @@ class _ScrollablePositionedListState extends State<ScrollablePositionedList>
405
409
406
410
@override
407
411
Widget build (BuildContext context) {
412
+ if (widget.scrollController? .positions.isEmpty == true )
413
+ WidgetsBinding .instance.addPostFrameCallback ((_) {
414
+ widget.scrollController? .attach (primary.scrollController.position);
415
+ });
416
+
408
417
return LayoutBuilder (
409
418
builder: (context, constraints) {
410
419
final cacheExtent = _cacheExtent (constraints);
@@ -610,6 +619,7 @@ class _ScrollablePositionedListState extends State<ScrollablePositionedList>
610
619
if (mounted) {
611
620
setState (() {
612
621
if (opacity.value >= 0.5 ) {
622
+ widget.scrollController? .detach (primary.scrollController.position);
613
623
// Secondary [ListView] is more visible than the primary; make it the
614
624
// new primary.
615
625
var temp = primary;
0 commit comments