@@ -279,12 +279,8 @@ class ItemScrollController {
279
279
/// This is an experimental API and is subject to change.
280
280
/// Behavior may be ill-defined in some cases. Please file bugs.
281
281
class ScrollOffsetController {
282
- Future <void > animateScroll (
283
- {required double offset,
284
- required Duration duration,
285
- Curve curve = Curves .linear}) async {
286
- final currentPosition =
287
- _scrollableListState! .primary.scrollController.offset;
282
+ Future <void > animateScroll ({required double offset, required Duration duration, Curve curve = Curves .linear}) async {
283
+ final currentPosition = _scrollableListState! .primary.scrollController.offset;
288
284
final newPosition = currentPosition + offset;
289
285
await _scrollableListState! .primary.scrollController.animateTo (
290
286
newPosition,
@@ -305,8 +301,7 @@ class ScrollOffsetController {
305
301
}
306
302
}
307
303
308
- class _ScrollablePositionedListState extends State <ScrollablePositionedList >
309
- with TickerProviderStateMixin {
304
+ class _ScrollablePositionedListState extends State <ScrollablePositionedList > with TickerProviderStateMixin {
310
305
/// Details for the primary (active) [ListView] .
311
306
var primary = _ListDisplayDetails (const ValueKey ('Ping' ));
312
307
@@ -327,10 +322,9 @@ class _ScrollablePositionedListState extends State<ScrollablePositionedList>
327
322
@override
328
323
void initState () {
329
324
super .initState ();
330
- ItemPosition ? initialPosition = PageStorage .of (context).readState (context);
325
+ ItemPosition ? initialPosition = PageStorage .of (context)? .readState (context);
331
326
primary.target = initialPosition? .index ?? widget.initialScrollIndex;
332
- primary.alignment =
333
- initialPosition? .itemLeadingEdge ?? widget.initialAlignment;
327
+ primary.alignment = initialPosition? .itemLeadingEdge ?? widget.initialAlignment;
334
328
if (widget.itemCount > 0 && primary.target > widget.itemCount - 1 ) {
335
329
primary.target = widget.itemCount - 1 ;
336
330
}
@@ -342,8 +336,7 @@ class _ScrollablePositionedListState extends State<ScrollablePositionedList>
342
336
final currentOffset = primary.scrollController.offset;
343
337
final offsetChange = currentOffset - previousOffset;
344
338
previousOffset = currentOffset;
345
- if (! _isTransitioning |
346
- (widget.scrollOffsetNotifier? .recordProgrammaticScrolls ?? false )) {
339
+ if (! _isTransitioning | (widget.scrollOffsetNotifier? .recordProgrammaticScrolls ?? false )) {
347
340
widget.scrollOffsetNotifier? .changeController.add (offsetChange);
348
341
}
349
342
});
@@ -365,10 +358,8 @@ class _ScrollablePositionedListState extends State<ScrollablePositionedList>
365
358
366
359
@override
367
360
void dispose () {
368
- primary.itemPositionsNotifier.itemPositions
369
- .removeListener (_updatePositions);
370
- secondary.itemPositionsNotifier.itemPositions
371
- .removeListener (_updatePositions);
361
+ primary.itemPositionsNotifier.itemPositions.removeListener (_updatePositions);
362
+ secondary.itemPositionsNotifier.itemPositions.removeListener (_updatePositions);
372
363
_animationController? .dispose ();
373
364
super .dispose ();
374
365
}
@@ -479,10 +470,7 @@ class _ScrollablePositionedListState extends State<ScrollablePositionedList>
479
470
}
480
471
481
472
double _cacheExtent (BoxConstraints constraints) => max (
482
- (widget.scrollDirection == Axis .vertical
483
- ? constraints.maxHeight
484
- : constraints.maxWidth) *
485
- _screenScrollCount,
473
+ (widget.scrollDirection == Axis .vertical ? constraints.maxHeight : constraints.maxWidth) * _screenScrollCount,
486
474
widget.minCacheExtent ?? 0 ,
487
475
);
488
476
@@ -542,43 +530,33 @@ class _ScrollablePositionedListState extends State<ScrollablePositionedList>
542
530
}) async {
543
531
final direction = index > primary.target ? 1 : - 1 ;
544
532
final itemPosition = primary.itemPositionsNotifier.itemPositions.value
545
- .firstWhereOrNull (
546
- (ItemPosition itemPosition) => itemPosition.index == index);
533
+ .firstWhereOrNull ((ItemPosition itemPosition) => itemPosition.index == index);
547
534
if (itemPosition != null ) {
548
535
// Scroll directly.
549
- final localScrollAmount = itemPosition.itemLeadingEdge *
550
- primary.scrollController.position.viewportDimension;
536
+ final localScrollAmount = itemPosition.itemLeadingEdge * primary.scrollController.position.viewportDimension;
551
537
await primary.scrollController.animateTo (
552
538
primary.scrollController.offset +
553
539
localScrollAmount -
554
540
alignment * primary.scrollController.position.viewportDimension,
555
541
duration: duration,
556
542
curve: curve);
557
543
} else {
558
- final scrollAmount = _screenScrollCount *
559
- primary.scrollController.position.viewportDimension;
544
+ final scrollAmount = _screenScrollCount * primary.scrollController.position.viewportDimension;
560
545
final startCompleter = Completer <void >();
561
546
final endCompleter = Completer <void >();
562
547
startAnimationCallback = () {
563
548
SchedulerBinding .instance.addPostFrameCallback ((_) {
564
549
startAnimationCallback = () {};
565
550
_animationController? .dispose ();
566
- _animationController =
567
- AnimationController (vsync: this , duration: duration)..forward ();
568
- opacity.parent = _opacityAnimation (opacityAnimationWeights)
569
- .animate (_animationController);
551
+ _animationController = AnimationController (vsync: this , duration: duration)..forward ();
552
+ opacity.parent = _opacityAnimation (opacityAnimationWeights).animate (_animationController);
570
553
secondary.scrollController.jumpTo (- direction *
571
- (_screenScrollCount *
572
- primary.scrollController.position.viewportDimension -
573
- alignment *
574
- secondary.scrollController.position.viewportDimension));
575
-
576
- startCompleter.complete (primary.scrollController.animateTo (
577
- primary.scrollController.offset + direction * scrollAmount,
578
- duration: duration,
579
- curve: curve));
580
- endCompleter.complete (secondary.scrollController
581
- .animateTo (0 , duration: duration, curve: curve));
554
+ (_screenScrollCount * primary.scrollController.position.viewportDimension -
555
+ alignment * secondary.scrollController.position.viewportDimension));
556
+
557
+ startCompleter.complete (primary.scrollController
558
+ .animateTo (primary.scrollController.offset + direction * scrollAmount, duration: duration, curve: curve));
559
+ endCompleter.complete (secondary.scrollController.animateTo (0 , duration: duration, curve: curve));
582
560
});
583
561
};
584
562
setState (() {
@@ -626,29 +604,19 @@ class _ScrollablePositionedListState extends State<ScrollablePositionedList>
626
604
final startOpacity = 0.0 ;
627
605
final endOpacity = 1.0 ;
628
606
return TweenSequence <double >(< TweenSequenceItem <double >> [
607
+ TweenSequenceItem <double >(tween: ConstantTween <double >(startOpacity), weight: opacityAnimationWeights[0 ]),
629
608
TweenSequenceItem <double >(
630
- tween: ConstantTween <double >(startOpacity),
631
- weight: opacityAnimationWeights[0 ]),
632
- TweenSequenceItem <double >(
633
- tween: Tween <double >(begin: startOpacity, end: endOpacity),
634
- weight: opacityAnimationWeights[1 ]),
635
- TweenSequenceItem <double >(
636
- tween: ConstantTween <double >(endOpacity),
637
- weight: opacityAnimationWeights[2 ]),
609
+ tween: Tween <double >(begin: startOpacity, end: endOpacity), weight: opacityAnimationWeights[1 ]),
610
+ TweenSequenceItem <double >(tween: ConstantTween <double >(endOpacity), weight: opacityAnimationWeights[2 ]),
638
611
]);
639
612
}
640
613
641
614
void _updatePositions () {
642
615
final itemPositions = primary.itemPositionsNotifier.itemPositions.value
643
- .where ((ItemPosition position) =>
644
- position.itemLeadingEdge < 1 && position.itemTrailingEdge > 0 );
616
+ .where ((ItemPosition position) => position.itemLeadingEdge < 1 && position.itemTrailingEdge > 0 );
645
617
if (itemPositions.isNotEmpty) {
646
- PageStorage .of (context).writeState (
647
- context,
648
- itemPositions.reduce ((value, element) =>
649
- value.itemLeadingEdge < element.itemLeadingEdge
650
- ? value
651
- : element));
618
+ PageStorage .of (context)? .writeState (context,
619
+ itemPositions.reduce ((value, element) => value.itemLeadingEdge < element.itemLeadingEdge ? value : element));
652
620
}
653
621
widget.itemPositionsNotifier? .itemPositions.value = itemPositions;
654
622
}
0 commit comments