// Copyright 2015 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_test/flutter_test.dart'; import 'package:flutter/material.dart'; const double kHeight = 10.0; const double kFlingOffset = kHeight * 20.0; class TestDelegate extends LazyBlockDelegate { @override Widget buildItem(BuildContext context, int index) { return new Container(height: kHeight); } @override double estimateTotalExtent(int firstIndex, int lastIndex, double minOffset, double firstStartOffset, double lastEndOffset) { return double.INFINITY; } @override bool shouldRebuild(LazyBlockDelegate oldDelegate) => false; } double currentOffset; void main() { testWidgets('Flings don\'t stutter', (WidgetTester tester) async { await tester.pumpWidget(new LazyBlock( delegate: new TestDelegate(), onScroll: (double scrollOffset) { currentOffset = scrollOffset; }, )); await tester.fling(find.byType(LazyBlock), const Offset(0.0, -kFlingOffset), 1000.0); expect(currentOffset, kFlingOffset); while (tester.binding.transientCallbackCount > 0) { double lastOffset = currentOffset; await tester.pump(const Duration(milliseconds: 20)); expect(currentOffset, greaterThan(lastOffset)); } }, skip: true); // see https://github.com/flutter/flutter/issues/5339 }