diff --git a/AUTHORS b/AUTHORS index b5f24fa5f1..b5c914b8f1 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 b494312099..50476b8f3e 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 1a704ce333..0000000000 --- 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); - }); -}