From 7b33efb620a30641e88faf87f9e641c1c7841e6e Mon Sep 17 00:00:00 2001 From: Ian Hickson Date: Fri, 1 Sep 2017 10:48:05 -0700 Subject: [PATCH] Revert "Fixed TrackingScrollController cleaning offset on position's detach (#11798)" (#11897) This reverts commit ec25f6bd5142d9c3b70d81a7ccf7c77f27dc63f7. --- AUTHORS | 1 - .../lib/src/widgets/scroll_controller.dart | 10 +--- .../tracking_scroll_controller_test.dart | 57 ------------------- 3 files changed, 2 insertions(+), 66 deletions(-) delete mode 100644 packages/flutter/test/widgets/tracking_scroll_controller_test.dart diff --git a/AUTHORS b/AUTHORS index b5f24fa5f1f..b5c914b8f12 100644 --- a/AUTHORS +++ b/AUTHORS @@ -15,4 +15,3 @@ Alexandre Ardhuin Luke Freeman Vincent Le Quéméner Mike Hoolehan -German Saprykin diff --git a/packages/flutter/lib/src/widgets/scroll_controller.dart b/packages/flutter/lib/src/widgets/scroll_controller.dart index b4943120992..50476b8f3ea 100644 --- a/packages/flutter/lib/src/widgets/scroll_controller.dart +++ b/packages/flutter/lib/src/widgets/scroll_controller.dart @@ -323,7 +323,6 @@ class TrackingScrollController extends ScrollController { final Map _positionToListener = {}; ScrollPosition _lastUpdated; - double _lastUpdatedOffset; /// The last [ScrollPosition] to change. Returns null if there aren't any /// attached scroll positions, or there hasn't been any scrolling yet, or the @@ -337,16 +336,13 @@ class TrackingScrollController extends ScrollController { /// /// * [ScrollController.initialScrollOffset], which this overrides. @override - double get initialScrollOffset => _lastUpdatedOffset ?? super.initialScrollOffset; + double get initialScrollOffset => _lastUpdated?.pixels ?? super.initialScrollOffset; @override void attach(ScrollPosition position) { super.attach(position); assert(!_positionToListener.containsKey(position)); - _positionToListener[position] = () { - _lastUpdated = position; - _lastUpdatedOffset = position.pixels; - }; + _positionToListener[position] = () { _lastUpdated = position; }; position.addListener(_positionToListener[position]); } @@ -358,8 +354,6 @@ class TrackingScrollController extends ScrollController { _positionToListener.remove(position); if (_lastUpdated == position) _lastUpdated = null; - if (_positionToListener.isEmpty) - _lastUpdatedOffset = null; } @override diff --git a/packages/flutter/test/widgets/tracking_scroll_controller_test.dart b/packages/flutter/test/widgets/tracking_scroll_controller_test.dart deleted file mode 100644 index 1a704ce3337..00000000000 --- a/packages/flutter/test/widgets/tracking_scroll_controller_test.dart +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2017 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:flutter/widgets.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - testWidgets('TrackingScrollController saves offset', - (WidgetTester tester) async { - final TrackingScrollController controller = new TrackingScrollController(); - - await tester.pumpWidget( - new PageView.builder( - itemBuilder: (BuildContext context, int index) { - return new ListView( - controller: controller, - children: new List.generate( - 10, - (int i) => new Container( - height: 100.0, child: new Text("Page$index-Item$i")), - ).toList()); - }, - ), - ); - - expect(find.text('Page0-Item1'), findsOneWidget); - expect(find.text('Page1-Item1'), findsNothing); - expect(find.text('Page2-Item0'), findsNothing); - expect(find.text('Page2-Item1'), findsNothing); - - controller.jumpTo(110.0); - await (tester.pumpAndSettle()); - - await tester.fling( - find.text('Page0-Item1'), const Offset(-100.0, 0.0), 10000.0); - await (tester.pumpAndSettle()); - - expect(find.text('Page0-Item1'), findsNothing); - expect(find.text('Page1-Item1'), findsOneWidget); - expect(find.text('Page2-Item0'), findsNothing); - expect(find.text('Page2-Item1'), findsNothing); - - await tester.fling( - find.text('Page1-Item1'), const Offset(-100.0, 0.0), 10000.0); - await (tester.pumpAndSettle()); - - expect(find.text('Page0-Item1'), findsNothing); - expect(find.text('Page1-Item1'), findsNothing); - expect(find.text('Page2-Item0'), findsNothing); - expect(find.text('Page2-Item1'), findsOneWidget); - - await tester.pumpWidget(new Text("Another page")); - - expect(controller.initialScrollOffset, 0.0); - }); -}