Skip to content

Commit c71407f

Browse files
committed
add scroll controller
1 parent 90a58a5 commit c71407f

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

packages/scrollable_positioned_list/lib/src/scrollable_positioned_list.dart

+10
Original file line numberDiff line numberDiff line change
@@ -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,7 @@ class _ScrollablePositionedListState extends State<ScrollablePositionedList>
610619
if (mounted) {
611620
setState(() {
612621
if (opacity.value >= 0.5) {
622+
widget.scrollController?.detach(primary.scrollController.position);
613623
// Secondary [ListView] is more visible than the primary; make it the
614624
// new primary.
615625
var temp = primary;

0 commit comments

Comments
 (0)